我正在尝试为我用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调用没有完成......我完全被难倒了。
答案 0 :(得分: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/