javascript - 测试 AJAX 应用程序时如何测试断开连接?

标签 javascript ajax debugging disconnect

我正在测试一个 AJAX 应用程序,我们需要处理暂时失去与服务器的连接或其他错误(例如 Gmail 或 Google 日历中的错误)。在测试中模拟这种情况的好方法是什么?

例如,是否有一个浏览器插件可以让用户暂时“关闭”标签页的互联网连接?我在 Chrome 中进行所有调试,因此如果有人可以为该浏览器提供建议,那将特别有帮助。

我尝试过的其他选项是将虚拟机的网络连接切换到服务器,或关闭服务器并重新启动它,这两种方法都不是非常轻量级或易于测试(后者也不保留任何状态.)

澄清:我对如何在测试代码中测试断开连接处理不感兴趣。我想在运行我的应用程序时创建一个断开连接以进行测试。理想情况下,它可以在我的浏览器的一个选项卡中轻松切换,而不会中断我的整个互联网连接。

最佳答案

在这个问题上,知道你用的是什么框架来测试是一件非常好的事情。对于其余部分,如果 AJAX 内容由 XMLHttpRequest 对象处理,您将无能为力,因为一旦请求被触发,您将无法再控制它。如果您使用的是 jQuery 之类的框架,请考虑对事件进行 juking。这涉及以合成方式触发事件。为此,如果您的事件处理程序在范围内是公共(public)的(如果您正在编写可维护的代码,它们应该是公共(public)的),您应该能够触发它们。如果没有,请将其公开。

否则,您可以通过以下方式在服务器端执行操作:

  1. 设置“测试模式”,让您的服务器在特定时间断开连接
  2. 考虑通过可配置的代理(nginx?)进行路由,以在不修改服务器的情况下有效地实现步骤 1
  3. 通过综合而不是事件触发您的断开连接处理程序。您知道您的 XMLHttpRequest 失败事件处理程序正在工作 - 您的浏览器没有错误可以确保这一点。您需要测试的是您的功能是否有效。

关于javascript - 测试 AJAX 应用程序时如何测试断开连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16547314/

相关文章:

当加载没有延迟时,Jquery ajax 调用在 Firefox 中不起作用

Java调试器: how is the inter-process communication done?

javascript - AngularJS Ng-Repeat 不迭代 $Scope 中的项目

javascript - 资源的扩展名与其实际内容不一致?

javascript - 找出是什么让一个元素成为焦点

asp.net - 如何通过ASP.NET MVC上传文件并显示进度栏?

php - 从客户端启动页面重新加载

javascript - 将 php 对象编码为 json

windows - 调试寄存器替代品?

C strcmp() 没有按预期返回 0