【发布时间】:2012-12-20 15:03:08
【问题描述】:
我有一个远程表单,它在 AJAX 请求正在进行时禁用提交按钮。我想检查一下,如果我强调单击按钮,将不会执行其他 AJAX 请求。如何在集成测试中检查这一点?
【问题讨论】:
-
这不是自动化测试,但您可以使用 firefox 和 firebug addon 轻松检查请求
标签: ruby-on-rails ajax testing
我有一个远程表单,它在 AJAX 请求正在进行时禁用提交按钮。我想检查一下,如果我强调单击按钮,将不会执行其他 AJAX 请求。如何在集成测试中检查这一点?
【问题讨论】:
标签: ruby-on-rails ajax testing
您可以使用 jquery 检查活动的 ajax 调用
$.active
如果你使用 capybara 进行集成测试
page.evaluate_script('$.active').should be <= 1
可能是一个解决方案。
因为您可能不知道呼叫发生的时间 辅助函数可能会解决问题
def test_until(seconds=5)
start_time = Time.now
while (Time.now - start_time) <= seconds do
yield
sleep 0.05
end
end
可以这样调用
test_until do
page.evaluate_script('$.active').should be <= 1
end
因此,如果有多个活动的 ajax 调用,则测试 5 秒
【讨论】:
保留一个全局或静态变量。在 Ajax 调用的函数中增加变量并检查变量的值。它永远不能超过 1,保证 Ajax 调用只进行一次。
如果您正在进行自动化测试,这将为您提供有关检查活动 ajax 调用次数和其他内容的更多信息。
http://hedleyproctor.com/2012/07/effective-selenium-testing/
希望这会有所帮助。谢谢。
【讨论】: