在测试中模拟连接丢失

问题描述

| 如何模拟(出于单元测试的目的)网络连接丢失或将请求重定向到其他任何地方? 我在类定义中有一些硬编码的地址:(并且我想测试例如地址不可达的脚本的行为。 我可以修改etc / hosts(我在win7上),但是我想在执行测试套件的过程中多次停用/修改连接。另外,在每次测试之前和之后修改它都是不切实际的。 因此,我需要在Windows上为PHP设置一个代理,该代理能够接受来自运行脚本的命令(以打开/关闭重定向),并能够基于称为url的重定向规则。 听起来像是fiddler的可能插件,但我没有找到任何:(     

解决方法

问题是这里发生了很多事情。您基本上是想在应用运行时更改DNS设置... 您需要自定义DNS服务器 将Windows设置为查看DNS服务器 测试时,您必须登录到DNS服务器,将名称解析更改为不起作用的IP,然后在Windows中刷新dns(ipconfig / flushdns)。 要么,或者您是否不能仅仅实现阻止某个地址的连接的防火墙?     ,您需要此http://en.wikipedia.org/wiki/Mock_object。现在,取决于您的应用程序的结构来确定您是否可以实际使用类似的东西:) 编辑: 如果您真的不能使用模拟对象,请尝试再次使用它们:)如果您仍然不能使用,我在过去的某个时候使用了这个(bat脚本)来测试连接断开时程序的反应。我使用ping来模拟
sleep
devcon
以控制网络设置。它不能满足您的所有需求,但可以作为一个起点
:loop
    devcon disable *VEN_1969*
    ping -n 5 localhost
    devcon restart *VEN_1969*
    ping -n 5 localhost
    devcon enable *VEN_1969*
    ping -n 5 localhost
# rem goto loop