我正在测试一个 AJAX 应用程序,我们需要处理暂时失去与服务器的连接或其他错误(例如 Gmail 或 Google 日历中的错误)。在测试中模拟这种情况的好方法是什么?
例如,是否有一个浏览器插件可以让用户暂时“关闭”标签页的互联网连接?我在 Chrome 中进行所有调试,因此如果有人可以为该浏览器提供建议,那将特别有帮助。
我尝试过的其他选项是将虚拟机的网络连接切换到服务器,或关闭服务器并重新启动它,这两种方法都不是非常轻量级或易于测试(后者也不保留任何状态.)
澄清:我对如何在测试代码中测试断开连接处理不感兴趣。我想在运行我的应用程序时创建一个断开连接以进行测试。理想情况下,它可以在我的浏览器的一个选项卡中轻松切换,而不会中断我的整个互联网连接。
最佳答案
在这个问题上,知道你用的是什么框架来测试是一件非常好的事情。对于其余部分,如果 AJAX 内容由 XMLHttpRequest 对象处理,您将无能为力,因为一旦请求被触发,您将无法再控制它。如果您使用的是 jQuery 之类的框架,请考虑对事件进行 juking。这涉及以合成方式触发事件。为此,如果您的事件处理程序在范围内是公共(public)的(如果您正在编写可维护的代码,它们应该是公共(public)的),您应该能够触发它们。如果没有,请将其公开。
否则,您可以通过以下方式在服务器端执行操作:
- 设置“测试模式”,让您的服务器在特定时间断开连接
- 考虑通过可配置的代理(nginx?)进行路由,以在不修改服务器的情况下有效地实现步骤 1
- 通过综合而不是事件触发您的断开连接处理程序。您知道您的 XMLHttpRequest 失败事件处理程序正在工作 - 您的浏览器没有错误可以确保这一点。您需要测试的是您的功能是否有效。
关于javascript - 测试 AJAX 应用程序时如何测试断开连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16547314/