如何在集成测试中检查正在进行的AJAX调用的数量?

时间:2012-12-20 15:03:08

标签: ruby-on-rails ajax testing

我有一个远程表单,在AJAX请求正在进行时禁用提交按钮。我想检查一下,如果我强调点击按钮,就不会有其他的AJAX请求。我怎么能在集成测试中检查这个?

2 个答案:

答案 0 :(得分:4)

您可以使用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秒

答案 1 :(得分:1)

保留全局变量或静态变量。增加Ajax调用的函数内的变量,并检查变量的值。它不应该超过一个,保证只进行一次Ajax调用。

如果您正在进行自动化测试,这将为您提供有关检查活动和其他内容的ajax调用次数的更多信息。

http://hedleyproctor.com/2012/07/effective-selenium-testing/

希望这会有所帮助。谢谢。