2011-10-20 2 views
7

RhinoMocks 버전 3.6을 사용하고 있고 Record-Replay를 사용하지 않고 있고 mock에 대한 검증 방법을 호출하지 않기 때문에;StrictMock과 Partialmock의 차이점을 설명 할 수 있습니까?

매우 간단하다는 점을 설명 할 수 있습니까?

MockRepository.GenerateMock() 
MockRepository.GeneratePartialMock() 
MockRepository.GenerateStrictMock() 

참고 : 내 모의 객체를 만드는 데 모든 시간을 .GenerateMock을 사용하고 난 이미 인수 기대를 제공하여 메서드 호출을 주장한다.

답변

16

의 차이는

당신이 StrictMock에 더 기대를 작성하지 않는 경우 explained in this article을, 그리고 방법은 예외가 던져 질 것이다, 모의에 불려갑니다.

PartialMock에 예상치를 작성하지 않고 모의 메소드가 호출되면 아무런 특별한 일이 발생하지 않습니다. 해당 모의 객체가 기본 클래스에서 파생되면 호출은 기존 기본 구현으로 전달됩니다.

DynamicMock이라는 것도 있습니다. DynamicMock에 예상치를 작성하지 않고 mock에서 메소드가 호출되면 스텁 메소드가 호출됩니다. 반환 값이있는 경우 기본값 (예 : null 또는 0)이 반환됩니다.

GenerateMock 저는 DynamicMock을 생성합니다.

Ayende는 DynamicMockStub만을 사용하는 이상을 권장하므로이 기본값을 선택했습니다. StrictMock은 부서지기 쉬운 테스트를 생성하며 대개 테스트 당 하나의 동작 만 확인하는 개념을 위반합니다. 어떻게 코드에 익숙해있어 일단 스텁/http://ayende.com/wiki/Rhino%20Mocks%203.5.ashx#CreateMockisdeprecated,replacedbyStrictMockTheuseofStrictMockisdiscouraged

나는 또한 그를이 엄격한 모의 객체로 시작하는 것이 유용하다라고 본 것, 동적 모의 객체에 다시 아래로 테스트를 작동 :

이 문서를 참조하십시오 - 시험 중이다. 저 tho를위한 아무 연결도 :

0

나는 Ayende의 낱말에 의해 "엄격한 가짜의 사용은 낙담된다"추가해야한다. http://ayende.com/wiki/Rhino+Mocks+3.5.ashx#CreateMockisdeprecated,replacedbyStrictMockTheuseofStrictMockisdiscouraged

그는 말한다 : 예상되지 않는 무언가가 그들에게 일이 일어날 경우

엄격한 모의 객체가 실패합니다. 결국에는 테스트 코드를 변경하면 변경 사항이 과 관련이 없더라도 테스트가 중단 될 수 있습니다.

대신 스텁과 동적 모의 객체를 사용하는 것이 좋습니다.

관련 문제