【问题标题】:How to check if Ajax request was sent in Capybara Rspec?如何检查 Ajax 请求是否在 Capybara Rspec 中发送?
【发布时间】:2016-09-10 07:52:43
【问题描述】:

我有一个搜索界面,可以在您键入时进行即时搜索。它被优化为仅在需要时发送 AJAX 请求,所以我想测试它是否正确。

如何检查是否发送了 Ajax 请求? (任何请求都足够好).. 也可以检查 Ajax 请求是否被中止(在其他测试用例中)

【问题讨论】:

    标签: jquery ruby-on-rails ajax rspec capybara


    【解决方案1】:

    对于 Capybara,您不会。正如 Xavier 所指出的,Capybara 专注于模拟用户。用户不知道 ajax 请求等,他们只看到结果。如果您在请求发生时在屏幕上显示了一个微调器(或其他视觉项目),那么您可以检查它的存在(因为用户会看到它),或者您可以检查是否显示了正确的结果。

    如果您尝试测试 AJAX 请求的实际优化行为,那么您可能希望使用 jasmine/jasmine-ajax 之类的东西进行 JS 测试。

    【讨论】:

    • 感谢微调器的想法,我实际上调暗了结果的不透明度,所以我认为它对我有用,让我检查一下!
    【解决方案2】:

    如果您使用的是 jQuery,jQuery.active function 会回答您的问题。

    我很确定如果没有在您的库代码中进行某种跟踪,就无法通过原始 XHR 请求获取此信息。

    作为一个元点,当您坚持断言用户可观察的行为时,水豚的效果最好。您能否验证是否出现了特定的搜索结果/建议,而不是检查是否发生了 ajax 请求?

    【讨论】:

    • 我知道 jQuery.active,但不知何故它似乎并不可靠。本地过滤和 AJAX 过滤后的结果可能相同(AJAX 只是在后端验证结果实际上是正确的,但有时是不必要的)。不过好点!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 2019-11-18
    • 2021-09-13
    • 2021-06-25
    相关资源
    最近更新 更多