我有使用Dns.GetHostEntry(hostNameOrIp)的代码,我想检查这个函数有一次返回实值,但是在一段时间内(当我决定)这个函数会抛出异常。
目前,我在visual 2010中使用MSTest框架。有人知道什么是最简单的方法来实现它?
发布于 2014-05-13 12:35:32
实现它的最简单方法是为这个静态方法创建包装器:
public class DnsWrapper : IDnsWrapper
{
public IPHostEntry GetHostEntry(string hostNameOrAddress)
{
Dns.GetHostEntry(hostNameOrAddress);
}
}并使您的代码依赖于这个接口:
public interface IDnsWrapper
{
IPHostEntry GetHostEntry(string hostNameOrAddress);
}现在,通过任何模拟库都可以很容易地模拟这个依赖项。例如,使用莫克
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();https://stackoverflow.com/questions/23631305
复制相似问题