Mockito를 사용하여 new() 연산자 호출로 클래스 테스트
new() 연산자를 사용하여 인스턴스를 초기화하는 모의 클래스는 특히 어려울 수 있습니다. 레거시 코드를 다룰 때. 그러한 예 중 하나는 LoginContext 개체를 인스턴스화하는 TestedClass 클래스의 login() 메서드입니다.
인스턴스화 전에 JAAS 보안 설정이 필요하므로 Mockito를 사용하여 이 클래스를 테스트하려고 할 때 문제가 발생합니다. LoginContext를 외부에서 호출하지 않고는 객체를 모의하는 것이 불가능해 보입니다.
해결책: Mockito 스파이 활용
이 장애물을 극복하기 위해 Mockito는 스파이를 제공합니다. 실제 물체에 대한 스파이를 만들 수 있습니다. 스파이는 스파이 대상 개체의 실제 메서드를 호출하지만 필요한 경우 특정 메서드를 모의 처리하거나 어설션할 수 있습니다.
TestedClass의 경우 해결 방법은 다음과 같습니다.
<code class="java">TestedClass tc = spy(new TestedClass()); LoginContext lcMock = mock(LoginContext.class); when(tc.login(anyString(), anyString())).thenReturn(lcMock);</code>
여기에서는 TestedClass에 스파이를 생성하여 실제 메서드와 효과적으로 상호 작용하고 우리가 기대하는 동작을 어설션할 수 있도록 합니다. login() 메소드를 모킹함으로써 반환 값을 제어하고 전달된 매개변수를 확인할 수 있습니다.
위 내용은 다음은 질문 측면과 핵심 문제/해결책에 초점을 맞춘 몇 가지 제목 옵션입니다. 옵션 1(직접): * Mockito Spies를 사용하여 `new()`로 초기화된 객체를 모의하는 방법은 무엇입니까? 옵션 2(문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!