我有一个使用 WCF 服务的应用程序。现在我想向应用程序添加单元测试。
在某些情况下,我需要模拟 WCF 服务,因为有时很难从服务中获取所需的行为(例如,服务会引发特殊异常)。
我可以向 wcf 客户端添加另一个接口(interface),但这似乎有点愚蠢,因为客户端调用已经在使用一个接口(interface)。
有没有一种简单的方法来模拟 WCF 服务?比创建另一个接口(interface)层并在其中重定向每个 WCF 调用更容易吗?
编辑:大多数答案似乎对 WCF 服务的使用知之甚少,因此需要澄清一下:
要从 ViewModel 使用 WCF 服务,我必须像这样管理连接:
ChannelFactory<IMyWcfService> channelFactory = new ChannelFactory<IMyWcfService>("");
IMyWcfService proxy = channelFactory.CreateChannel();
proxy.CallMyStuff();
proxy.Close();
我不能只将 ViewModel 代理传递给 WCF,因为每个事务都需要打开和关闭连接。由于这个原因,使用 RhinoMock/NMock 是行不通的,因为他们需要一个 ViewModel 来获取代理作为参数,如果你使用 WCF,就不能这样做。
最佳答案
为什么你不能使用 NMock2 之类的东西? mock IMyWcfService
直接接口(interface)?
如果您需要能够即时创建新实例,请使用工厂隐藏 ChannelFactory<IMyWcfService>
从客户端。通过这种方式,您可以替换工厂,为客户端提供创建模拟而不是真实代理的工厂。
关于.net - 模拟 WCF 服务的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/406955/