我用的是水豚、黄瓜和恶作剧。我正在测试附加到表单提交按钮的 JavaScript 函数,该函数旨在捕获提交事件并阻止它(在后台执行 AJAX 请求)。使用和不使用 AJAX,页面最终看起来都是一样的,但 AJAX 方法要快得多,并且不会中断浏览体验等。
我可以做什么来测试表单确实没有提交,并且更改是动态 AJAX 调用而不是重新加载的结果?
@jules答案的修改版本:
describe "My page", :js do
it "reloads when it should" do
visit "/"
expect_page_to_reload do
click_link "Reload me"
end
end
def expect_page_to_reload
page.evaluate_script "$(document.body).addClass('not-reloaded')"
yield
expect(page).not_to have_selector("body.not-reloaded")
end
end
编辑2017-01-19:
我发现我的这个旧答案奇怪地似乎没有回答实际问题,而是相反(检查页面has重新加载)。这就是我们当前在应用程序中检查页面是否执行的操作not reload:
def expect_page_not_to_reload
page.evaluate_script %{$(document.body).addClass("not-reloaded")}
expect(page).to have_selector("body.not-reloaded")
yield
sleep 0.5 # Give it a chance to reload before we check.
expect(page).to have_selector("body.not-reloaded")
end
这两个答案都依赖 jQuery 来添加类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)