gpt4 book ai didi

c# - 单元测试调用 wcf 服务的方法

转载 作者:太空狗 更新时间:2023-10-29 20:03:38 25 4
gpt4 key购买 nike

如何对调用 WCF 服务的业务层方法进行单元测试?

例子:

public void SendData(DataUnit dataUnit)
{

//this is WCF call
SomeServiceClient svc = new SomeServiceClient();

svc.SomeMethod(dataUnit);

}

有没有办法在我的单元测试项目中模拟 SomeServiceClient?

最佳答案

这里的问题是您已将业务层与 WCF 服务紧密耦合 - 您实际上在业务层中创建了服务客户端的新实例,这意味着现在不可能在不调用 SendData 方法的情况下调用服务方式。

这里最好的解决方案是在您的架构中引入依赖注入(inject)。

在最简单的情况下,您所做的就是将您的服务类实例传递到您的业务层。这通常是在类构造时使用构造函数参数完成的。

public class BusinessClass
{
private ISomeServiceClient _svc;

public BusinessClass(ISomeServiceClient svc)
{
_svc = svc;
}

public void SendData(DataUnit dataUnit)
{
_svc.SomeMethod(dataUnit);
}
}

请注意,上面的代码是一种设计模式,绝对不依赖任何框架,例如控制反转容器。

如果贵公司的政策是不使用此类框架(顺便说一句,这是一项疯狂的政策),您仍然可以在单元测试中手动注入(inject)服务的模拟实例。

关于c# - 单元测试调用 wcf 服务的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6140534/

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