【发布时间】:2009-01-10 17:20:25
【问题描述】:
如何使用 Rhino Mocks 模拟 WCF 服务代理?
【问题讨论】:
标签: c# .net wcf unit-testing rhino-mocks
如何使用 Rhino Mocks 模拟 WCF 服务代理?
【问题讨论】:
标签: c# .net wcf unit-testing rhino-mocks
创建您的服务,以便它实现一个接口。然后,您可以在客户端中模拟该接口,也可以创建该接口的假实现以在您的测试中使用。
【讨论】:
我知道这是一篇旧帖子,但它是我最近完成的。在我的场景中,我有一些与 Wcf 服务对话的验收测试,但我不想使用真正的服务。实际上我确实在上面做了一个blog post,但这是最低点。
为给定对象创建 wcf 服务的静态类:
public static class MockServiceHostFactory
{
public static ServiceHost GenerateMockServiceHost<TMock>(TMock mock, Uri baseAddress, string endpointAddress)
{
var serviceHost = new ServiceHost(mock, new[] { baseAddress });
serviceHost.Description.Behaviors.Find<ServiceDebugBehavior>().IncludeExceptionDetailInFaults = true;
serviceHost.Description.Behaviors.Find<ServiceBehaviorAttribute>().InstanceContextMode = InstanceContextMode.Single;
serviceHost.AddServiceEndpoint(typeof(TMock), new BasicHttpBinding(), endpointAddress);
return serviceHost;
}
}
创建一个模拟并将其用作 wcf 服务:
Castle.DynamicProxy.Generators.AttributesToAvoidReplicating.Add<ServiceContractAttribute>();
var myWcfServiceMock = Substitute.For<IMyWcfService>();
var mockServiceHost = MockServiceHostFactory.GenerateMockServiceHost(myWcfServiceMock , new Uri("http://localhost:8001"), "MyService");
mockServiceHost.Open();
...
mockServiceHost.Close();
【讨论】: