visit "/whatever"
expect(page).to have_no_content "This is loaded in asynchronously"
这应该失败,但是过去了。为什么?当页面首次加载时,内容不存在,而且Capybara合理地不等待它。
现在Capybara 2.0宣布了wait_until
个坏消息,等待这些内容的祝福方式是什么?
答案 0 :(得分:1)
visit "/whatever"
wait_for_ajax do
expect(page).to have_no_content "This is loaded in asynchronously"
end
然后,在spec_helper
:
def wait_for_ajax
sleep(Capybara.default_wait_time)
yield
end
请注意,每次运行此规范时,等待Capybara的default_wait_time
结束。但是我不知道你还要检查那样的东西。如果您的ajax快速执行,您可以通过将default_wait_time
设置为1秒来补偿这一点。
答案 1 :(得分:1)
visit "/whatever"
wait_for_ajax do
expect(page).to have_no_content "This is loaded in asynchronously"
end
然后,在spec_helper
:
def wait_for_ajax
page.evaluate_script("jQuery.active") == 0
yield
end
这将评估脚本,直到它为止,然后运行你的断言。