【问题标题】:How can I check the number of AJAX calls being made, in an integration test?如何在集成测试中检查 AJAX 调用的数量?
【发布时间】:2012-12-20 15:03:08
【问题描述】:

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

【问题讨论】:

  • 这不是自动化测试,但您可以使用 firefox 和 firebug addon 轻松检查请求

标签: ruby-on-rails ajax testing


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-16
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      相关资源
      最近更新 更多