【发布时间】:2016-09-10 07:52:43
【问题描述】:
我有一个搜索界面,可以在您键入时进行即时搜索。它被优化为仅在需要时发送 AJAX 请求,所以我想测试它是否正确。
如何检查是否发送了 Ajax 请求? (任何请求都足够好).. 也可以检查 Ajax 请求是否被中止(在其他测试用例中)
【问题讨论】:
标签: jquery ruby-on-rails ajax rspec capybara
我有一个搜索界面,可以在您键入时进行即时搜索。它被优化为仅在需要时发送 AJAX 请求,所以我想测试它是否正确。
如何检查是否发送了 Ajax 请求? (任何请求都足够好).. 也可以检查 Ajax 请求是否被中止(在其他测试用例中)
【问题讨论】:
标签: jquery ruby-on-rails ajax rspec capybara
对于 Capybara,您不会。正如 Xavier 所指出的,Capybara 专注于模拟用户。用户不知道 ajax 请求等,他们只看到结果。如果您在请求发生时在屏幕上显示了一个微调器(或其他视觉项目),那么您可以检查它的存在(因为用户会看到它),或者您可以检查是否显示了正确的结果。
如果您尝试测试 AJAX 请求的实际优化行为,那么您可能希望使用 jasmine/jasmine-ajax 之类的东西进行 JS 测试。
【讨论】:
如果您使用的是 jQuery,jQuery.active function 会回答您的问题。
我很确定如果没有在您的库代码中进行某种跟踪,就无法通过原始 XHR 请求获取此信息。
作为一个元点,当您坚持断言用户可观察的行为时,水豚的效果最好。您能否验证是否出现了特定的搜索结果/建议,而不是检查是否发生了 ajax 请求?
【讨论】: