클래스가 있습니다. 예 : 예를 들어 기본 클래스에서 상속 된 DerivedClass입니다. BaseClass. BaseClass는 IBaseClass라는 인터페이스를 구현합니다. IBaseClass에는 정수 자동 속성 인 TestProperty라는 1 개의 속성이 있습니다.Rhino Mock mock 상속 된 인터페이스
I PartialMultiMock DerivedClass과 같이 :
derivedClassMock.Expect(d => d.TestProperty).Return(141);
그러나 나는 다음과 같은 예외가 점점 계속 : : 다음 기대를 설정
derivedClassMock = repository.PartialMultiMock<DerivedClass>(typeof(IBaseInterface));
다음과 같이
"잘못된 호출, 마지막 호출이 사용되었거나 호출이 이루어지지 않았습니다. 가상 (C#)/무시 가능 (VB) 메서드를 호출하고 있는지 확인하십시오. "
BaseClass의 TestProperty 구현을 가상으로 표시하면 모든 것이 작동하지만 이것이 필요한 이유를 이해하려고합니다. DerivedClass가 IBaseInterface를 구현했다면 부분 모의 기능을 사용하기 위해 가상으로 표시 할 필요가 없었습니다. (적어도 나는 그렇게 생각하지 않는다 - 내가 틀렸다면 수정하시기 바랍니다) 다음과 같이 그때 조금 더 가서 그에 기대를 IBaseInterface에 멀티 모의 캐스팅 및 설정하려고
:
var derivedInterface = (IBaseInterface) derivedClassMock;
derivedInterface.Expect(d => d.TestProperty).Return(1);
이 테스트는 이제 예외없이 실행되지만 TestProperty에서 반환 된 값은 예상대로 1이 아니지만 int의 기본값 인 0입니다. 이것은 나에게 스텁과 비슷한 행동을 제안합니다.
가능한 경우 누군가가 혼란 스러울만큼 조금 더 잘 이해할 수 있도록 설명 할 수 있습니까? 부분적으로 상속 된 인터페이스를 사용하여 클래스를 모의 할 수 없으며 인터페이스에서 기대치를 설정하면 스텁처럼 동작하는 이유는 무엇입니까?
미리 감사드립니다.