Я пытаюсь разработать расширение (IExtension<OperationContext>
) для System.ServiceModel.ObjectContext с использованием TDD. Расширение должно использоваться в качестве хранилища для пожизненного менеджера, который будет использоваться с Виндзорским замком.
Проблема заключается в абстрагировании (насмешке) от OperationContext. Поскольку это статический объект, который создается автоматически во время выполнения, я не знаю, как его смоделировать (без TypeMock, которого у меня нет).
OperationContext может быть обновлен, если я предоставлю объект канала, который реализует IChannelFactory, однако - этот интерфейс пугающе сложен, и я не знаю, что мне нужно реализовать в заглушке, чтобы заставить его работать должным образом.
Размещение службы и ее вызов также не заполняют OperationContext ...
[TestFixtureSetUp]
public void FixtureSetup()
{
_serviceHost = new TypeResolverServiceHost(typeof(AilDataService));
_serviceHost.AddServiceEndpoint(typeof (IAilDataService), new BasicHttpBinding(), SvcUrl);
_serviceHost.Open();
var endpointAddress = new EndpointAddress(SvcUrl);
_ailDataService = ChannelFactory<IAilDataService>.CreateChannel(new BasicHttpBinding(), endpointAddress);
}
[TestFixtureTearDown]
public void FixtureCleanup()
{
_serviceHost.Close();
}
[Test]
public void Can_Call_Service()
{
var reply = _ailDataService.GetMovexProductData("169010", new TaskSettings{MovexDatabase = "MVXCDTATST", MovexServer = "SEJULA03"});
Assert.That(reply, Is.Not.Null);
// This fails
Assert.That(OperationContext.Current!=null);
}
Какие-нибудь советы?