Как насмехаться над услугами WCF? - PullRequest
5 голосов
/ 10 января 2009

Как смоделировать прокси служб WCF с помощью Rhino Mocks?

Ответы [ 2 ]

5 голосов
/ 10 января 2009

Создайте свой сервис, чтобы он реализовывал интерфейс. Затем вы можете либо смоделировать интерфейс в вашем клиенте, либо создать поддельную реализацию интерфейса для использования в ваших тестах.

2 голосов
/ 05 октября 2011

Я знаю, что это старый пост, но это то, что я недавно сделал. В моем сценарии у меня есть несколько приемочных тестов, которые общаются с сервисом 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();
...