2010-11-24 3 views
6

Mockito로 동작의 동작을 확인하려고합니다. 테스트 코드의 actionPerformed는 타입 1의 생성자에서 제공되는 개체에 대한 것으로 someMethod의 바로 호출을 포함하는이Mockito가 잘못된 인수에 대해 불평합니다.

final Type1 mock = mock(Type1.class); 
new SomeAction<Type1>(mock).actionPerformed(null); 

verify(mock).someMethod(); 

방법처럼 보인다. 그러나 Mockito는 예상되는 메서드 호출이 발생하지 않는다고 불평하지만 대신 다른 메서드 호출이 발생했습니다. 그러나 Mockito가 인쇄 한 두 개의 호출에 대한 String 표현은 정확히 동일합니다!

설명 어떤 현상이 발생하고 있습니까?

업데이트 : ErrorMessage가 Mockito

Argument(s) are different! Wanted: 
type1.someMethod(); 
-> at xxx 
Actual invocation has different arguments: 
type1.someMethod(); 
-> at xxx 
+0

나는 이것을 시험해 보았다. 예상대로 작동했다. (검증 통과.) 어떤 버전의 Mockito를 사용하고 있습니까? 나는 1.8에있다. null 매개 변수로 인해 다른 분기를 가져 오지 않았습니까? – omerkudat

+0

버전은 1.8.5입니다. someMethod는 oneliner이므로 실제로는 다른 부분이 없습니다. –

+0

SSCCE를 제공해 주시겠습니까? – daveb

답변

3

에서 이것은 약간의 신축성,하지만 당신의 toString 구현을 확인합니다. 나는 예상과 관찰이 실제로 단위 테스트의 관점에서 같았을 때 자극적 인 단위 테스트 시나리오를 만났습니다. 결국 그것은 toString에서 변형 된 것이므로 실제로는 그렇지 않았을 때 유사성이 있다고 믿게되었습니다.

+0

메서드가 void를 반환하고 인자를 취하지 않기 때문에 toString이 관련되어 있지 않으므로 ... 생각합니다. –

+0

단위 테스트 결과에서 toString() 표현이 나를 속였습니다. Mockito 객체가 불만을 나타내고 있었는지 아닌지를 알아 내기 위해 toString을 Object에있는 것처럼 다시 오버라이드합니다. –