[java] Mockito를 사용하여 특정 메소드에 전달된 인자들로 다른 메소드를 호출했을 때 객체의 내부 상태를 확인하는 방법은?

우선 Mockito를 사용하여 특정 객체를 mocking해야 합니다. 예를 들어, SomeClass라는 클래스의 methodA 메소드를 호출할 때 내부에서 호출되는 methodB 메소드의 인자를 확인하고 싶다면, 아래와 같이 Mockito를 사용하여 SomeClass 객체를 mocking합니다.

SomeClass someClass = Mockito.mock(SomeClass.class);

그리고 methodA를 호출하는 동작을 정의해야 합니다. Mockito의 when 메소드를 사용하여 methodA 메소드를 호출할 때 어떤 인자들이 전달되는지 지정합니다. 아래 코드는 methodA가 호출될 때 인자 arg1arg2를 받아올 수 있도록 지정한 예시입니다.

Mockito.when(someClass.methodA(Mockito.anyInt(), Mockito.anyString())).thenAnswer(invocation -> {
    int arg1 = invocation.getArgument(0);
    String arg2 = invocation.getArgument(1);
    // 여기에서 arg1, arg2를 이용하여 다른 메소드 호출 후 객체의 내부 상태를 확인하는 로직을 작성합니다.
    return null;
});

thenAnswer 메소드는 methodA가 호출될 때 동작을 정의하는 메소드입니다. invocation을 통해 methodA에 전달된 인자들을 얻을 수 있습니다. 여기에서는 arg1arg2를 이용하여 다른 메소드를 호출한 후 객체의 내부 상태를 확인하는 로직을 작성하면 됩니다.

마지막으로, Mockito를 사용하여 객체의 메소드를 호출하고 결과를 확인할 수 있습니다.

int arg1 = 10;
String arg2 = "test";
someClass.methodA(arg1, arg2);

// 내부에서 호출되는 다른 메소드의 결과에 따라 객체의 내부 상태를 확인하는 로직을 작성한 후 테스트합니다.

위 예시 코드를 참고하여 Mockito를 사용하여 특정 메소드에 전달된 인자들로 다른 메소드를 호출했을 때 객체의 내부 상태를 확인하도록 구현해보세요.

정확한 사용법 및 자세한 내용은 Mockito 공식 문서를 참고하시기 바랍니다.

참고 문서: Mockito 공식 문서