Mockito: doReturn()과 when()의 차이점 이해
Mockito의 doReturn() 사이에 혼동이 있는 것은 이해할 만합니다... when() 및 when()...thenReturn() 메서드는 동일한 작업을 수행하는 것처럼 보일 수 있습니다. 둘 다 메서드 호출을 모의하고 미리 정의된 값을 반환할 수 있지만, 모의 객체(@Mock 주석 처리) 대신 스파이 대상 객체(@Spy 주석 처리)를 사용할 때 관련된 미묘한 차이가 있습니다.
키 차이점: 메서드 호출 동작
중요한 차이점은 스파이와 상호 작용할 때 이러한 메서드가 동작하는 방식에 있습니다. object:
차이점을 설명하는 예:
다음 코드를 고려하세요.public class MyClass { public String methodToBeTested() { return anotherMethodInClass(); } public String anotherMethodInClass() { throw new NullPointerException(); } }
스파이를 사용하여 테스트 object:
@Spy private MyClass myClass; // ... // This approach will work without throwing an exception doReturn("test").when(myClass).anotherMethodInClass(); // This approach will throw a NullPointerException when(myClass.anotherMethodInClass()).thenReturn("test");스파이 개체를 사용하면 when()...thenReturn()이 NullPointerException을 발생시키는 anotherMethodInClass()를 호출하려고 시도합니다. 반면 doReturn()...when()은 메서드 호출을 피하고 "test"를 직접 반환하여 예외를 억제합니다.
결론
이들 사이의 차이점 스파이 개체를 사용할 때 두 가지 방법이 분명해집니다. 스파이 대상 객체의 경우 doReturn()...when()은 실제 메서드 호출을 우회하고 미리 정의된 값을 직접 반환하여 더 큰 제어 기능을 제공합니다. 이와 대조적으로, when()...thenReturn()은 실제 메서드를 호출하므로 예외나 기타 의도하지 않은 동작이 발생할 수 있습니다. 따라서 적절한 방법을 선택하는 것은 원하는 동작과 모의 객체를 사용하는지 스파이 객체를 사용하는지 여부에 따라 달라집니다.위 내용은 Mockito: `doReturn()` 대 `when()`: 언제 어느 것을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!