0

Backbone と Rails 3.2 で記述したシングル ページ アプリの統合テストを作成しようとしています。実際のブラウザー (Chrome) を使用すると、クライアント側で動作しているように見えます。 Cucumber)、モデルの fetch() メソッドが完了しません。私は: $.active jQuery 呼び出し、および番号が 0 にならない..何が間違っているのかについてのアイデアはありますか?

page.execute_script("$.active") # -> 0
page.execute_script("App.backboneModel.fetch()")
page.execute_script("$.active") # -> 1
# ... long time later...
page.execute_script("$.active") # -> 1

ヘッドレスブラウザとして capybara-webkit を使用しており、Selenium/firefox でも試しました。上記のコードは、Rails インスタンスが起動された実際のブラウザーでは完全に機能しますが、テスト中は機能しません! 何らかの理由で ajax 呼び出しが完了しません...私は完全に困惑しています。

4

1 に答える 1

0

このヘルパーを試してください

def wait_for_ajax(timeout = Capybara.default_wait_time)
  page.wait_until(timeout) do
    page.evaluate_script 'jQuery.active == 0'
  end
end

ソース/詳細: http://artsy.github.com/blog/2012/02/03/reliably-testing-asynchronous-ui-w-slash-rspec-and-capybara/

于 2012-11-16T11:51:25.047 に答える