2015-01-17 5 views
1

나는 구체적인 클래스에 대한 종속성이있는 클래스를 조롱하려고은 좋아 : 비 인터페이스 종속성이있는 AutoMocking 클래스 ... 프레임 워크가이를 지원합니까?

AutoMockContainer with support for automocking classes with non-interface dependencies

나는 3 가지 AutoMocking 프레임 워크 (Moq.Contrib에 포함 UnityAutoMoq, AutoMoq 및 AutoMockContainer)을 시도했다. 이러한 프레임 워크 중 어느 것도 구체적인 종속성을위한 모의 객체 생성을 지원하지 않습니다. Mark Seeman이 autofac으로이 작업을 수행하는 방법에 대한 예제를 제공했음을 이해하지만 이러한 프레임 워크에서 지원되지 않는 이유를 이해하지 못합니다. 거기에 내가 시도하지 않은 것을 지원하는 프레임 워크가 있습니까? 그렇지 않다면 누군가가 나를 Unity와 함께하도록 도울 수 있습니까?

나와 동료가 대답을 찾지 않고 하루 종일 우리의 머리를 쾅쾅 소리가났습니다. 어떤 도움이라도 대단히 감사하겠습니다.

답변

1

기본적으로 지원되지 않습니다. 최소한 위에서 언급 한 프레임 워크 중 하나 이상은 아닙니다. 자동 조롱 빌더 전략 코드

if (type.IsInterface || type.IsAbstract) 
{ 
    context.Existing = GetOrCreateMock(type); 
    context.BuildComplete = true; 
} 

Moq.Mock 캐슬 동적 프록시를 사용하고 비 가상 유형 동적 프록시를 생성 할 수없는 다음과 같이 진행한다.

별도의 참고 : 비가 상 유형에 프록시를 만들도록 허용하지 않으면 개발자가 가상 ​​유형 (예 : 추상/인터페이스)을 사용할 수 있으므로 개인적으로 이것이 좋은 근거라고 생각합니다. 이는 또한 인터페이스 기반 프로그래밍을 의미하며 테스트 가능성과 유지 보수성을 향상시켜보다 나은 설계를 가능하게합니다.

이러한 기능을 실제로 원한다면 다음 단계는 무료가 아닌 TypeMock과 같은 프록시 기반이 아닌 모의 객체 프레임 워크를 살펴 보는 것입니다.