2013-04-10 3 views
1

EDIT : 이전에 올바르게 입력하지 않았기 때문에이 질문을 완전히 다시 말하고 있습니다.Rhino Mocks - 모의 클래스를 인수로 전달할 때 생성자가 실패합니다.

내 테스트 클래스를 제외한 모든 것이 API의 일부입니다. mock 인터페이스를 mock 클래스에 전달한 다음 mock 클래스를 테스트 클래스에 전달합니다. 내 테스트 클래스는 클래스를 확장하고 생성자의 본문은 비어 있습니다. 내 코드가 내 생성자에서 중단됩니다. 즉, 구현이 숨겨진 기본 클래스 생성자에 오류가 있음을 의미합니다. 이 문제가 불분명하면 사과드립니다. 명확하지 않은 부분을 다시 알려 드리겠습니다. 당신의 도움에 미리 감사드립니다.

public class TestClass : ApiClass0 
{ 
    ApiClass1 apiClass1; 
    public TestClass(ApiClass1 apiClass1) : base(apiClass1) 
    { 
     this.apiClass1 = apiClass1; 
    } 
    public void MethodToTest() 
    { 
     apiClass1.Method0(); 
    } 
} 

public class ApiClass0 
{ 
    public ApiClass0(ApiClass1 apiClass1) { } 
} 

public class ApiClass1 
{ 
    public ApiClass1(IApiInterface i) {} 
    public Method0() { } 
} 

public interface IApiInterface0 {} 

public class TestClassTest 
{ 
    [TestInitialize()] 
    public void TestInitialize() 
    { 
     IApiInterface0 mApiInterface0 = MockRepository.GenerateMock<IApiInterface0>(); 
     ApiClass1 mApiClass1 = MockRepository.GenerateMock<ApiClass1>(mApiInterface0); 
     TestClass testClass = new TestClass(mApiClass1); //code breaks here 
    } 
} 
+3

당신이 무엇을 의미하는지는 정말로 분명하지 않습니다 ... 당신이 그것을 조롱하려고한다면 왜 당신은 "먼저 그것을 인스턴스화 할 수 있어야합니까?" 조롱 프레임 워크는 인스턴스 자체를 만들 것입니다. –

+1

상황을 설명하기 위해 몇 가지 샘플 코드를 제공 할 수 있다고 생각하지 않습니까? – PinnyM

+0

@JonSkeet 죄송합니다. 그 이유는 GenerateMock (Rhino 사용)을 호출했을 때 null 참조 예외가 발생했을 때입니다. – tmakino

답변

0

ApiClass1 생성자 인수로 IApiInterface에 걸리지 만 테스트 IApiInterface0 함께 호출 : 여기

코드 예제. 이 중 하나를 변경하면 테스트가 통과됩니다.