> Java > java지도 시간 > Mockito의 doReturn()과 when(): 스파이 대상 개체를 사용할 때의 차이점은 무엇입니까?

Mockito의 doReturn()과 when(): 스파이 대상 개체를 사용할 때의 차이점은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-16 17:28:10
원래의
542명이 탐색했습니다.

Mockito's doReturn() vs. when(): What's the Difference When Using Spied Objects?

Mockito의 doReturn()과 when()의 차이점 이해

Spring MVC 애플리케이션을 개발하는 동안 Mockito를 사용하여 서비스 계층을 모의합니다. 객체는 일반적인 관행입니다. Mockito의 기능을 탐색하는 동안 doReturn(...).when(...) 및 when(...).thenReturn(...)이 모두 동일한 기능을 수행하는 것으로 보인다는 것이 분명해졌습니다. 그러면 다음과 같은 질문이 생깁니다. 이 두 메서드 사이에 차이점이 있습니까?

doReturn()과 when()의 주요 차이점은 모의 객체(@ 주석이 달린 객체) 대신 스파이 대상 객체(@Spy 주석이 달린 객체)를 사용할 때 분명해집니다. Mock).

doReturn()과 Spied의 when() 비교 객체

  • doReturn(...).when(...): 실제로 호출하지 않고도 메서드의 반환 값을 수정할 수 있습니다.
  • when(...).thenReturn(...): 지정된 메서드를 반환하기 전에 실제 메서드 실행을 호출합니다. value.

다음 코드를 고려하세요.

public class MyClass {
    protected String methodToBeTested() {
        return anotherMethodInClass();
    }

    protected String anotherMethodInClass() {
        throw new NullPointerException();
    }
}
로그인 후 복사

테스트 케이스:

@Spy
private MyClass myClass;

// Works fine, does not invoke anotherMethodInClass()
doReturn("test").when(myClass).anotherMethodInClass();

// Throws NullPointerException because anotherMethodInClass() is invoked
when(myClass.anotherMethodInClass()).thenReturn("test");
로그인 후 복사

요약하자면, 스파이 개체를 사용할 때, doReturn()을 사용하면 메서드 실행을 건너뛰고 반환 값을 직접 설정할 수 있으며, when()은 원하는 값을 반환하기 전에 실제 메서드를 호출합니다. Mockito에서 스파이 개체를 작업할 때 이러한 이해가 중요합니다.

위 내용은 Mockito의 doReturn()과 when(): 스파이 대상 개체를 사용할 때의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿