2017-03-08 2 views
0

私は最初からRails統合スイートを書いています。プロジェクトでは、非同期動作のためにカスタムWebsocketクライアント(およびネイティブES6プロミスオブジェクト)を使用します。Rails統合テストでネイティブES6の約束を解決するのを待ちますか?

未解決の約束があり、テストの次のステップに進む前に待つ必要があることをRailsアプリに伝える方法はありますかJavascriptのソースコードを変更しないでください。そこにあるほとんどのものは、AJAXリクエストが完了するのを待つことに焦点を当てています。これはアプリの一部で便利ですが、WebsocketコマンドはAJAXから独立しています。

答えて

1

(AJAXリクエストの場合と同じように)約束事が解決されたときに表示される目に見える変更に対して、アサーション/期待値を設定する必要があります。だから、ページ

assert_text('New text that is added') # non-RSpec 
expect(page).to have_text('New text that is added') # if using RSpec 

にテキストを追加するかどうかは、ページ

assert_selector(:css, '#id_of_new_element') # non-RSpec 
expect(page).to have_css('#id_of_new_element') # RSpec 

などカピバラが/期待が/待つためCapybara.default_max_wait_timeまで再試行しますアサーションを提供する新しい要素を追加した場合彼らの条件が満たされているので、ページに何が変わるかを期待するように指示すれば、約束が成り立つのを待つでしょう。

関連する問題