6

如何使用 Rhino Mocks 模拟 WCF 服务代理?

4

2 回答 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 回答