.net - 模拟 WCF 服务的简单方法?

标签 .net wcf unit-testing mocking

我有一个使用 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/

相关文章:

.net - .net 中是否有双面堆栈类?

c# - 当绑定(bind)安全性为 TransportCredentialOnly 时,在 WCF REST 中创建自定义 IIdentity

javascript - 如何测试返回 $timeout promise 且内部包含 $http.get 的 AngularJS 工厂方法?

javascript - 将 HTML 附加到 Javascript Fireunit 测试

c# - 在进程加载后完成操作

c# - WebClient 强制超时

c# - 我可以从 C# 类创建 VB 类的对象吗

wcf - RESTful - 我什么时候应该使用 POST 和 GET?

c# - 字典的 WCF 反序列化,其中枚举类型是关键

c# - 使用 Moq 更新、删除单元测试的方法