[java] Mockito를 사용하여 특정 메소드에 전달된 인자들 중 특정 인자 값이 변경되었는지 확인하는 방법은?
ArgumentCaptor는 Mockito에서 제공하는 클래스로, 메소드 호출 시 전달된 인자들을 캡처하여 나중에 접근할 수 있도록 도와줍니다.
아래의 코드를 통해 ArgumentCaptor를 사용하여 특정 인자 값이 변경되었는지 확인하는 예제를 살펴보겠습니다.
import static org.mockito.ArgumentMatchers.*;
import org.mockito.Mockito;
import org.mockito.ArgumentCaptor;
...
@Test
public void testMethod() {
// Mock 객체 생성
YourClass yourClass = Mockito.mock(YourClass.class);
// 메소드 호출과 함께 인자 값 전달
yourClass.yourMethod("oldValue");
// ArgumentCaptor 생성
ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
// 메소드 호출 시 넘겨진 인자들을 캡처
Mockito.verify(yourClass).yourMethod(captor.capture());
// 캡처한 인자 값 접근
String capturedValue = captor.getValue();
// 특정 조건에 따라 값이 변경되었는지 확인
assertEquals("newValue", capturedValue);
}
위의 예제에서 YourClass.yourMethod()
는 인자로 문자열을 받는 메소드라고 가정합니다. ArgumentCaptor
는 String
타입으로 생성되었으며, yourMethod()
호출 시 전달된 인자 값을 캡처합니다.
그 후, captor.getValue()
를 통해 캡처한 값을 가져와서 특정 조건과 비교할 수 있습니다.
이를 통해 특정 메소드에 전달된 인자들 중 특정 인자 값이 변경되었는지 Mockito를 사용하여 확인할 수 있습니다.
참고 자료: