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

时间:2013-05-14 15:35:08

标签: javascript ajax debugging disconnect

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

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

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

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

3 个答案:

答案 0 :(得分:0)

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

如果失败,你可以通过以下方式在服务器端采取行动:

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

答案 1 :(得分:0)

当我们过去必须这样做时,我们通常会打开nic设置并禁用适配器。一些有笔记本电脑的人可以通过有线连接运行,只需将其拔掉即可。

你也可以使用netsh:

netsh interface set interface <interface name> DISABLED/ENABLED 

答案 2 :(得分:0)

我不知道任何现成的解决方案,但我知道如何实现这一目标。

如果您的服务器在Linux上运行,您可以编写一个简单的脚本,该脚本会向iptables添加一条阻止ip或tcp级别流量的规则。然后运行脚本以阻止解锁流量。

我会在不同的端口上设置一个虚拟主机,放置一些脚本来阻止allt raffic,解锁流量,限制等,然后将这些脚本添加到书签以便快速运行它们。这些脚本只会使用不同的参数调用iptables。