6

Rhinoモックを使用して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 に答える