TDD를 사용하는 System.ServiceModel.ObjectContext에 대한 확장 (IExtension<OperationContext>
)을 개발하려고합니다. 이 확장은 평생 관리자가 Windsor Castle과 함께 사용할 수있는 저장소로 사용됩니다.WCF 서비스와 함께 사용하기 위해 IExtension <OperationContext>를 테스트하는 유닛
문제는 OperationContext를 추상화 (조롱)하는 데 있습니다. 런타임 중에 자동으로 생성되는 정적 객체이기 때문에 모의하는 법을 모르겠습니다 (TypeMock이없는 경우 - 내가 갖고 있지 않은 경우).
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);
}
모든 팁 ... 서비스를 호스팅하고 중 하나 OperationContext를 채우지 않습니다 호출?
당신이 성 윈저 WCF 시설 봤어 대신이 많은 자신을 일을하고? –