我有使用Dns.GetHostEntry(hostNameOrIp)
的代码,我想检查一次此函数返回实数值但一段时间(当我决定时)此函数抛出异常的情况。 />
目前我在visual studio 2010中使用MSTest框架。
有人知道实现它的最简单方法是什么?
答案 0 :(得分:7)
实现它的最简单方法是为这种静态方法创建包装器:
public class DnsWrapper : IDnsWrapper
{
public IPHostEntry GetHostEntry(string hostNameOrAddress)
{
Dns.GetHostEntry(hostNameOrAddress);
}
}
让你的代码依赖于这个界面:
public interface IDnsWrapper
{
IPHostEntry GetHostEntry(string hostNameOrAddress);
}
现在,任何模拟库都可以轻松地模拟这种依赖关系。例如,Moq:
Mock<IDnsWrapper> dnsMock = new Mock<IDnsWrapper>();
dnsMock.Setup(d => d.GetHostEntry(It.IsAny<string>()))
.Throws(new SocketException());
var yourClass = new YourClass(dnsMock.Object); // inject interface implementation
yourClass.DoSomethingWhichGetHostsEntry();