Asd*_*dfg 7 c# wcf unit-testing
如何对调用WCF服务的业务层方法进行单元测试?
例:
public void SendData(DataUnit dataUnit)
{
//this is WCF call
SomeServiceClient svc = new SomeServiceClient();
svc.SomeMethod(dataUnit);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在单元测试项目中模拟SomeServiceClient?
Dav*_*all 12
您的问题在于您已将业务层与WCF服务紧密耦合 - 您实际上在业务层中创建了服务客户端的新实例,这意味着现在无法调用SendData方法而无需调用服务方法.
这里最好的解决方案是为您的架构引入依赖注入.
最简单的方法是将服务类的实例传递到业务层.这通常使用构造函数参数在类构造时完成.
public class BusinessClass
{
private ISomeServiceClient _svc;
public BusinessClass(ISomeServiceClient svc)
{
_svc = svc;
}
public void SendData(DataUnit dataUnit)
{
_svc.SomeMethod(dataUnit);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,上面的代码是一种设计模式,完全不依赖于任何框架,如Inversion of Control容器.
如果贵公司的政策是不使用此类框架(顺便说一句疯狂的政策),您仍然可以在单元测试中手动注入服务的模拟实例.
| 归档时间: |
|
| 查看次数: |
4504 次 |
| 最近记录: |