[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);
    }
}

위의 예제 코드에서는 MyClassmethodA를 호출할 때 전달되는 인자들 중에서 int 타입의 인자를 찾기 위해 ArgumentCaptor를 사용하였습니다. ArgumentCaptorArgumentCaptor.forClass(타입) 메소드로 생성하고, verify 메소드와 함께 사용하여 해당 메소드 호출 시 인자를 캡처하고 값을 확인할 수 있습니다.