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

Geo*_*Geo 7 testing ajax ruby-on-rails

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

rap*_*imo 4

您可以使用 jquery 检查活动的 ajax 调用

$.active
Run Code Online (Sandbox Code Playgroud)

如果您使用水豚进行集成测试

page.evaluate_script('$.active').should be <= 1
Run Code Online (Sandbox Code Playgroud)

可能是一个解决方案。

因为您可能不知道何时发生调用,所以辅助函数可能会解决问题

def test_until(seconds=5)
  start_time = Time.now
  while (Time.now - start_time) <= seconds do
    yield
    sleep 0.05
  end
end
Run Code Online (Sandbox Code Playgroud)

可以这样称呼

test_until do
  page.evaluate_script('$.active').should be <= 1
end
Run Code Online (Sandbox Code Playgroud)

因此,如果有多个活动的 ajax 调用,您需要测试 5 秒