gpt4 book ai didi

c# - 单元测试代码与 Dns.GetHostEntry(hostNameOrIp) 依赖

转载 作者:太空狗 更新时间:2023-10-30 00:31:42 28 4
gpt4 key购买 nike

我有使用 Dns.GetHostEntry(hostNameOrIp) 的代码,我想检查一次该函数返回真实值的场景在某个时间(当我决定) 此函数抛出异常。
目前我在 visual studio 2010 中使用 MSTest 框架。有人知道实现它的最简单方法是什么?

最佳答案

实现它的最简单方法是为这个静态方法创建包装器:

public class DnsWrapper : IDnsWrapper
{
public IPHostEntry GetHostEntry(string hostNameOrAddress)
{
Dns.GetHostEntry(hostNameOrAddress);
}
}

并让你的代码依赖于这个接口(interface):

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();

关于c# - 单元测试代码与 Dns.GetHostEntry(hostNameOrIp) 依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23631305/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com