테스트 기능을 향상하기 위해 모의 프레임워크 Mockito를 활용할 때 개발자는 doReturn()을 자주 접하게 됩니다. 및 when() 메소드. 두 메서드 모두 스텁 메서드 호출의 목적을 제공하지만 스파이 대상 개체(@Spy 주석 처리)로 작업할 때 두 메서드 사이에는 미묘한 차이가 있습니다.
when(...).thenReturn(...):
doReturn(...).when(...):
다음 사항을 고려하세요. MyClass:
public class MyClass { protected String methodToBeTested() { return anotherMethodInClass(); } protected String anotherMethodInClass() { throw new NullPointerException(); } }
doReturn(...).when(...):
@Spy private MyClass myClass; // Works as expected doReturn("test").when(myClass).anotherMethodInClass();
when(...).thenReturn(.. .):
// Throws a NullPointerException when(myClass.anotherMethodInClass()).thenReturn("test");
이 시나리오에서 doReturn()은 다음의 예외를 보장합니다. anotherMethodInClass()는 원하는 값을 반환하는 동안 회피됩니다. 대조적으로, when()은 실제 메소드 호출을 트리거하여 NullPointerException이 발생합니다.
따라서 스파이 대상 객체로 작업할 때 doReturn()과 when() 사이의 선택은 호출할지 여부에 따라 달라집니다. 실제 방법을 사용하거나 완전히 우회합니다.
위 내용은 Mockito: `doReturn()` 대 `when()`: 언제 어느 것을 스파이 개체와 함께 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!