如何模拟(出于单元测试的目的)网络连接丢失或在其他地方重定向请求?
我在类定义中有一些硬编码的地址:(我想测试脚本的行为,例如,地址是无法访问的。
我可以修改etc / hosts(我在win7上),但是我想在执行测试套件期间多次停用/修改连接。而且,在每次测试之前和之后都是不可行的。
所以,我需要在windows上设置php的代理,一个能够接受来自运行脚本的命令的代理(打开/关闭重定向),并能够根据被调用的url重定向规则。
听起来像是Fiddler的可能插件,但我没有找到任何:(
答案 0 :(得分:1)
您需要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
答案 1 :(得分:1)
问题是这里有很多事情要发生。您基本上想要在应用运行时更改DNS设置...
您需要自定义DNS服务器 设置Windows以查看DNS服务器
在测试时,您必须登录DNS服务器,将名称解析更改为不工作的IP,并在Windows中刷新您的DNS(ipconfig / flushdns)。
或者,你能不能只实现阻止某个地址连接的防火墙?