Mockito.when (Object)는 항상 유형 호출이 안전하고 더 읽기 쉬운 (특히 연속 호출을 스텁 할 때) 스텁에 권장됩니다.
doReturn ()이 유용한 드문 경우는 다음과 같습니다.
1. 스파이에서 실제 물체를 감시하고 실제 방법을 호출 할 때 부작용이 발생하는 경우
List list = new LinkedList(); List spy = spy(list);
// 불가능 : 실제 메소드가 호출되어 spy.get (0)이 IndexOutOfBoundsException을 던짐 (목록이 비어 있음)
when(spy.get(0)).thenReturn("foo");
// 스터 빙에는 doReturn ()을 사용해야합니다.
doReturn("foo").when(spy).get(0);
2. 이전 예외 스터 빙 무시 :
when(mock.foo()).thenThrow(new RuntimeException());
// 불가능 : 예외 스텁 foo () 메소드가 호출되어 RuntimeException이 발생합니다. when(mock.foo()).thenReturn("bar");
// 스터 빙에는 doReturn ()을 사용해야합니다.
doReturn("bar").when(mock).foo();
위의 시나리오는 Mockito의 우아한 구문의 균형을 보여줍니다. 그러나 시나리오는 매우 드 that니다. 감시는 산발적이어야하며 예외 스터 빙을 무시하는 것은 매우 드 rare니다. 일반적으로 스터 빙을 오버 라이딩하는 것은 너무 많은 스터 빙을 나타내는 잠재적 코드 냄새입니다.
doReturn()
유용한 몇 가지 경우 가 있습니다.