Tomasz Nurkiewicz의 대답은 전체 이야기를 말하지 않는 것처럼 보입니다!
NB Mockito 버전 : 1.10.19.
나는 매우 Mockito newb이므로 다음과 같은 행동을 설명 할 수 없습니다.이 답변을 향상시킬 수있는 전문가가 있다면 자유롭게 느끼십시오.
여기서 문제가되는 방법 getContentStringValue
은 NOT final
및 NOT static
입니다.
이 줄 은 원래 메소드를 호출합니다 getContentStringValue
.
doReturn( "dummy" ).when( im ).getContentStringValue( anyInt(), isA( ScoreDoc.class ));
이 줄 은 원래 메소드를 호출 하지 않습니다getContentStringValue
.
doReturn( "dummy" ).when( im ).getContentStringValue( anyInt(), any( ScoreDoc.class ));
내가 대답 할 수없는 이유로을 사용 isA()
하면 의도 된 (?) "방법을 호출하지 않음"동작이 doReturn
실패합니다.
여기에 포함 된 메소드 시그니처를 살펴 보겠습니다 . 둘 다의 static
메소드입니다 Matchers
. 둘 다 Javadoc에 의해 리턴된다고 말하는데 null
, 그 자체로 머리를 돌리기가 약간 어렵습니다. 아마도 Class
매개 변수로 전달 된 객체는 검사되지만 결과는 계산되거나 버려지지 않습니다. 그 감안할 때 null
모든 클래스에 대한 설 수 당신이의 서명을 호출하지 않도록 조롱 방법에 대한줬으면되지 않도록 isA( ... )
하고 any( ... )
바로 돌아 null
일반적인 매개 변수보다는 * <T>
?
어쨌든:
public static <T> T isA(java.lang.Class<T> clazz)
public static <T> T any(java.lang.Class<T> clazz)
API 설명서에는 이에 대한 힌트가 없습니다. 또한 이러한 "메소드를 호출하지 마십시오"동작에 대한 요구는 "매우 드물다"고합니다. 개인적으로 저는이 기술을 항상 사용합니다 . 일반적으로 조롱에는 몇 개의 라인이 "장면을 설정"하고 그 뒤에는 여러분이 준비한 모의 문맥에서 장면을 "재생"하는 메소드가 호출됩니다. 그리고 풍경과 소품을 설정하는 동안 배우가 마지막 단계에 들어가서 그들의 마음을 연기하기 시작하는 것입니다 ...
그러나 이것은 저의 급료보다 더 큽니다. 나는 지나가는 Mockito 대제사로부터 설명을 초대합니다 ...
* "일반 매개 변수"가 올바른 용어입니까?