如何使用 Rhino Mocks 模拟 WCF 服务代理?
Yoann. B
问问题
7621 次
2 回答
5
创建您的服务,以便它实现一个接口。然后,您可以在客户端中模拟接口,也可以创建接口的假实现以在测试中使用。
于 2009-01-10T17:23:32.010 回答
2
我知道这是一个旧帖子,但它是我最近所做的。在我的场景中,我有一些与 Wcf 服务对话的验收测试,但我不想使用真正的服务。我确实在它上面写了一篇博文,但这里是低调。
为给定对象创建 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();
于 2011-10-05T11:35:50.150 回答