[java] Mockito를 사용하여 특정 메소드에 전달된 인자들로 다른 메소드를 호출했을 때 특정 타입의 인자를 찾는 방법은?
Mockito에서는 ArgumentCaptor
를 사용하여 메소드 호출 시 전달된 인자들을 캡처하고 원하는 타입의 인자를 찾을 수 있습니다. 아래는 ArgumentCaptor
를 사용하여 메소드 호출 시 특정 타입의 인자를 찾는 예제 코드입니다.
import org.mockito.ArgumentCaptor;
// 테스트할 클래스
public class MyClass {
public void methodA(int arg1, String arg2) {
methodB(arg1, arg2);
}
public void methodB(int arg1, String arg2) {
// 다른 작업 수행
}
}
// 테스트 코드
import static org.mockito.Mockito.*;
public class MyClassTest {
@Test
public void testMethodA() {
// ArgumentCaptor 생성
ArgumentCaptor<Integer> captor = ArgumentCaptor.forClass(Integer.class);
// Mock 객체 생성
MyClass myClass = mock(MyClass.class);
// 메소드 호출 시 인자를 캡처
myClass.methodA(1, "test");
// ArgumentCaptor를 사용하여 캡처한 인자 확인
verify(myClass).methodB(captor.capture(), anyString());
// 캡처한 인자 가져오기
int capturedArg = captor.getValue();
// 특정 타입의 인자 확인
assertEquals(1, capturedArg);
}
}
위의 예제 코드에서는 MyClass
의 methodA
를 호출할 때 전달되는 인자들 중에서 int
타입의 인자를 찾기 위해 ArgumentCaptor
를 사용하였습니다. ArgumentCaptor
는 ArgumentCaptor.forClass(타입)
메소드로 생성하고, verify
메소드와 함께 사용하여 해당 메소드 호출 시 인자를 캡처하고 값을 확인할 수 있습니다.