我正在嘗試使用TDD爲System.ServiceModel.ObjectContext開發擴展(IExtension<OperationContext>
)。該擴展將被用作終身管理器的存儲器,以便與溫莎城堡一起使用。單元測試用於WCF服務的IExtension <OperationContext>
問題在於抽象(嘲諷)OperationContext。由於它是一個在運行時自動創建的靜態對象,我不知道如何模擬它(沒有TypeMock - 我沒有)。
如果我提供了一個實現IChannelFactory的通道對象,OperationContext可以被刷新,但是 - 這個接口是非常複雜的,我不知道我需要在存根中實現什麼東西才能正常工作。
託管服務並調用它不填充的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);
}
任何提示嗎?
你看着城堡溫莎WCF設施,而不是做了很多這方面的工作你自己嗎? – 2010-05-18 12:43:39