在测试AJAX应用程序时如何测试断开连接
How to test a disconnection when testing an AJAX application?
我正在测试一个AJAX应用程序,我们需要处理暂时失去连接到服务器或其他错误(例如,在Gmail或谷歌日历)。在测试中模拟这种情况的好方法是什么?
例如,是否有一个浏览器插件允许一个人暂时"关闭"一个标签的互联网连接?我在Chrome中进行所有调试,因此如果有人可以为该浏览器提供建议,那将特别有帮助。
我尝试过的其他选项是将网络连接切换到VM到服务器,或者关闭服务器并重新启动它,这两种方法都不是非常轻量级或易于测试(后者也不保留任何状态)
澄清:我对如何在测试代码中测试断开处理不感兴趣。理想情况下,它可以很容易地在我的浏览器的一个选项卡中切换,而不涉及到我的整个互联网连接。
在这个问题上,知道使用哪个框架进行测试将是一件非常好的事情。对于其余部分,如果AJAX内容是由XMLHttpRequest对象处理的,那么您可以做的事情就很少,因为一旦请求被触发,您就无法再控制它了。如果您正在使用jQuery之类的框架,请考虑juking事件。这涉及到以合成方式触发事件。为了做到这一点,如果您的事件处理程序在范围内是公共的(如果您正在编写可维护的代码,它们应该是公共的),您应该能够解雇它们。如果没有,则将其公开。
如果失败,您可以在服务器端执行以下操作:
- 设置服务器在特定时间断开连接的"测试模式"
- 考虑通过一个可配置的代理路由(nginx?)来有效地实现步骤1,而无需修改服务器 自动触发断开连接处理程序,而不是触发事件。您知道XMLHttpRequest失败的事件处理程序正在工作—这可以通过您的浏览器没有错误来保证。你需要测试的是你的功能是否有效。
当我们过去不得不这样做时,我们通常打开网卡设置并禁用适配器。有些用笔记本电脑的人会在有线连接下运行,然后直接拔掉插头。
你也可以使用netsh:
netsh interface set interface <interface name> DISABLED/ENABLED
我不知道任何现成的解决方案,但我有一个想法如何实现。
如果你的服务器在linux上运行,你可以写一个简单的脚本,它将添加一个规则到iptables
上阻止ip或tcp级别的流量。然后只需运行脚本来阻止或取消阻止流量。
我会在不同的端口上设置一个虚拟主机,在那里放置一些脚本来阻止所有流量,取消阻塞流量,节流等,然后将这些脚本添加到书签中,以便快速运行它们。这些脚本只调用带有不同参数的iptables。
- 模糊事件的Javascript测试
- 测试客户端'通过https-ASP.net连接的能力
- Meteor测试/部署iOS应用程序以连接真实服务器(而非本地主机)
- 使用节点单元编写带有数据库连接/驱动程序的单元测试
- 测试是否成功连接火碱
- 猫鼬模型单元测试 - 如果任何测试用例失败,连接将不会关闭
- 加载脚本文件以测试在线连接是否有任何缺点
- 连接到数据库的单元测试异步函数
- 在多个选项卡中测试 websocket 连接会使页面快速响应
- 连接到测试 websocket 服务器有效,但连接到我的 Node.js 服务器失败
- Mongoose创建测试数据并在没有数据库连接的情况下进行填充
- iBooks通过HTML小部件测试互联网连接
- 定期测试互联网连接
- 套接字.io-client简单客户端/服务器测试不能连接- Node.js
- 使用JavaScript或PHP测试与YouTube服务器的连接
- 在测试AJAX应用程序时如何测试断开连接
- 我们可以用javascript连接数据库进行功能测试吗?
- Dojo /连接“onKeyPress"ENTER事件在本地工作,但在测试服务器上不起作用
- 在Jasmine测试中处理WebSocket连接
- Javascript Internet连接测试不起作用