【问题标题】:How to simulate a failed XHR call in a test environment如何在测试环境中模拟失败的 XHR 调用
【发布时间】:2015-02-11 05:57:40
【问题描述】:

我的应用程序正在制作一个 XHR POST,我需要要么故意失败,要么完全跳过它。测试是运行我请求的服务不可用的场景。

这必须在浏览器中完成,我无权更改编码来执行此操作,也无权访问防火墙。这个 asnyc XHR 调用将在单页 Web 应用程序中从一个磁贴转换到另一个磁贴时发生,以及其他 XHR 调用

到目前为止我已经使用了firebug的XHR断点,但是当断点启动时我已经得到了成功的响应。

还有其他方法吗?

【问题讨论】:

    标签: ajax xmlhttprequest google-chrome-devtools firebug


    【解决方案1】:

    一个简单的方法是使用Fiddler。安装,点击AutoResponder选项卡,勾选“Enable Rules”和“Unmatched Requests pass through”,在规则编辑器中指定你需要测试响应失败的url并添加规则“*drop”。

    当你请求这个 url 时,Fiddler 会立即关闭连接。

    示例用法 - 如果我想模拟 USA Today 体育部分的 ajax 请求失败:

    现在http://www.usatoday.com/sports/ 永远不会加载,因为 ajax 请求将失败。

    更多详情here.

    类似问题已经回答here

    【讨论】:

      【解决方案2】:

      只需将此文件用作请求接收者...(将您的请求发送到 send.php)。

      send.php

      <php
        header('HTTP/1.0 403 Forbidden');
        echo "HTTP Error occured!";
      ?>
      

      PS。您可以使用不同的错误代码:

      403 - 禁止

      404 - 未找到

      503 - 服务暂时不可用

      Full_List_of_HTTP_status_codes

      【讨论】:

      • 我无法进行任何代码更改,该代码已作为大型企业应用程序的一部分部署到了我无法控制的测试环境中,遗憾的是我无法进行小的代码更新和重新部署
      • 所以只需向不存在的文件发出请求,它将返回404 错误。或者从其他服务器请求文件...它将返回Client Access Denied错误(浏览器跨域策略)。
      • 可以在通话开始之前通过任何浏览器开发工具进行设置吗?我在原始帖子中添加了更多信息。我无法准确控制调用何时发生,它将发生在单页 Web 应用程序中的磁贴(页面)转换之间,以及其他异步 XHR 调用
      • 您可以在浏览器中编辑脚本 - 例如在 Chrome 中,您在第一行设置调试点,它停在那里,然后您修改代码中的 js 并点击继续按钮。或者您可以更改主机文件以将请求重定向到您的服务器,如果 XHR 请求的域不同于主站点(例如它的子域)......如果不是,则仅适用第一个选项。有关 Chrome 方法的更多信息:stackoverflow.com/questions/5067532/…
      • 谢谢,帮助很大。缩小和组合的 JS 文件没有帮助:(我会继续寻找
      【解决方案3】:

      Google Chrome 开发者工具允许您通过'Request Blocking' 执行此操作。这实质上允许您在阻止加载特定资源的同时刷新页面。您可以在这个充实的答案中找到更多详细信息:https://stackoverflow.com/a/32459616/823549

      【讨论】:

        【解决方案4】:

        如果您想模拟 任何 故障,那么只需离线即可。请求将超时并失败。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-11-23
          • 2021-02-25
          • 1970-01-01
          • 2022-08-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-06
          相关资源
          最近更新 更多