模拟测试中的连接丢失

时间:2011-05-25 12:47:39

标签: php windows unit-testing networking proxy

如何模拟(出于单元测试的目的)网络连接丢失或在其他地方重定向请求?

我在类定义中有一些硬编码的地址:(我想测试脚本的行为,例如,地址是无法访问的。

我可以修改etc / hosts(我在win7上),但是我想在执行测试套件期间多次停用/修改连接。而且,在每次测试之前和之后都是不可行的。

所以,我需要在windows上设置php的代理,一个能够接受来自运行脚本的命令的代理(打开/关闭重定向),并能够根据被调用的url重定向规则。

听起来像是Fiddler的可能插件,但我没有找到任何:(

2 个答案:

答案 0 :(得分:1)

您需要http://en.wikipedia.org/wiki/Mock_object。它现在取决于你的应用程序的结构,看看你是否可以实际使用这样的东西:)


编辑: 如果你真的不能使用模拟对象,请尝试再次使用它们:)如果你仍然无法使用,我在过去的某个时刻使用这个(bat脚本)来测试程序在连接断开时如何反应。我使用ping来模拟sleepdevcon来控制网络设置。它不仅可以满足您的所有需求,还可以提供一个起点

: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)。

或者,你能不能只实现阻止某个地址连接的防火墙?