0

我正在尝试为我用 Backbone 和 Rails 3.2 编写的单页应用程序编写集成测试当使用实际浏览器(Chrome)时,事情似乎在客户端工作但是,当使用 Capybara 使用客户端代码进行测试时(使用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 回答