2016-07-05 3 views
1

WcfOperationLifestyle 컨테이너에 대한 단위 테스트를 어떻게 할 수 있습니까? 내 MyBootstrapper 클래스 http://simpleinjector.readthedocs.io/en/latest/wcfintegration.html에 따라WcfOperationLifestyle 간단한 인젝터 단위 테스트

container = new Container();  
container.Options.DefaultScopedLifestyle = new WcfOperationLifestyle(); 
... 
container.Register<IService, Service>(Lifestyle.Scoped); 

에,하지만 내가 테스트

var actual = MyBootstrapper.Container.GetInstance<IService>(); 

내가

을 얻을 단위 때 IService는 'WCF 조작'생활 양식으로 등록되어 있지만, 인스턴스가 WCF 운영의 컨텍스트 외부에서 요청됩니다. 테스트 실행은 WCF 환경이 아니기 때문에 완전히 의미가 있습니다.

답변

2

DefaultScopedLifestyle 속성의 전체 ide를 사용하면 단위 테스트와 같은 다른 컨텍스트에서 구성을보다 쉽게 ​​재사용 할 수 있습니다.

당신이해야 할 일은 CreateContainer 방법으로 범위가 지정된 라이프 스타일을 제공하는 것입니다. 이렇게하면 WCF 시작 코드와 테스트 코드 모두 자신의 범위가 지정된 라이프 스타일을 사용할 수 있습니다.

테스트를 위해 가장 편리한 라이프 스타일은 아마도 LifetimeScopeLifestyle입니다. container.BeginLifetimeScope()에 대한 사용 블록을 사용하여 GetInstance에 대한 호출을 래핑 할 수 있습니다.

Verify 메서드는 내부적으로 자체 범위를 시작하므로이 메서드는 많은 테스트를 수행합니다. 모든 등록을 구성 할 수 있는지 확인하고 자신을 찾기 힘든 일반적인 구성 오류를 확인합니다.

+0

다른 단위 테스트에서 확인 방법을 사용하고 있습니다. 현재의 단위 테스트는 장식 된 주사가 특정 환경 (예 : UAT에서의 가짜 구현, 실제에서의 실제 구현 등)에서 올바르게 수행되었는지 확인하기위한 것입니다. 고마워, 나는 너의 추천을 따를거야. – kord

관련 문제