>Java >java지도 시간 >다음은 질문 측면과 핵심 문제/해결책에 초점을 맞춘 몇 가지 제목 옵션입니다. 옵션 1(직접): * Mockito Spies를 사용하여 `new()`로 초기화된 객체를 모의하는 방법은 무엇입니까? 옵션 2(문제

다음은 질문 측면과 핵심 문제/해결책에 초점을 맞춘 몇 가지 제목 옵션입니다. 옵션 1(직접): * Mockito Spies를 사용하여 `new()`로 초기화된 객체를 모의하는 방법은 무엇입니까? 옵션 2(문제

Linda Hamilton
Linda Hamilton원래의
2024-10-27 11:11:30397검색

Here are a few title options, focusing on the question aspect and the core problem/solution:

Option 1 (Direct): 
* How to Mock Objects Initialized with `new()` Using Mockito Spies? 

Option 2 (Problem-Focused):
* Mockito Mocking Challenge: Testing Classe

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.