문제

WinSpool에서 몇 가지 기본 방법을 랩핑하는 정적 클래스가 있습니다.

public static class WinSpool
{
     [DllImport("winspool.drv")]
     public static extern int OpenPrinter(string pPrinterName, out IntPtr phPrinter, IntPtr pDefault);
     ...
     //some more methods here
}

나는 단위 테스트를 위해 그들을 조롱하고 싶지만 이것에 대한 패턴을 찾을 수 없었습니다. (모두가 정적 클래스를 피합니까?)

도움이 되었습니까?

해결책

예, 정적 클래스는 일반적으로입니다 단위 테스트 및 조롱 분야에서 눈살을 찌푸리기. Afaik 오픈 소스 조롱 프레임 워크 (예 : 코뿔소 조롱) 정적 클래스 조롱을 지원합니다

당신이 절대적이고 긍정적으로 정적 클래스를 조롱해야한다면, 나는 당신이 가야 할 것을 두려워합니다. 타입 콕, 무료가 아닙니다.

다른 팁

Microsoft는 Shims를 사용하여 정적 유형을 조롱 할 수있는 Visual Studio 2012 Ultimate를위한 Fakes Framework를 제작했습니다. 심은 외부 접근 가능한 모든 방법에 대한 대의원을 제공하는 "가짜"어셈블리입니다. 그런 다음 호출이 이벤트 필터를 통해 라우팅되고 테스트가 대의원 중 하나를 설정할 때마다 대의원은 통화를 처리합니다. 누구나 의존성 주입을 통해 처리되지 않는 정적 유형을 장려하고 싶어하는 것은 아닙니다. 선호되는 방향은 심의 필요성과 DI를 사용하여 스터브의 사용을 향해 멀리 이동하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top