7

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

4

2 回答 2

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 秒

于 2013-01-03T17:00:53.460 回答
1

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

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

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

希望这可以帮助。谢谢你。

于 2013-01-03T17:24:55.277 回答