[java] Mockito를 사용하여 특정 메소드에 전달된 인자들로 다른 메소드를 호출했을 때 인자 값이 변경되었는지 확인하는 방법은?

다른 메소드가 호출될 때 전달된 인자 값이 변경되었는지 확인하기 위해서는 ArgumentCaptor를 사용할 수 있습니다. ArgumentCaptor는 메소드에 전달된 인자를 캡처하여 확인할 수 있는 기능을 제공합니다.

아래는 예시 코드입니다.

// 특정 클래스의 메소드 모킹
SomeClass someClass = Mockito.mock(SomeClass.class);

// 인자 값을 캡처하기 위한 ArgumentCaptor 생성
ArgumentCaptor<SomeObject> captor = ArgumentCaptor.forClass(SomeObject.class);

// 메소드 호출 시 인자 값이 변경되는지 확인
someClass.someMethod(arg1, arg2);

// 다른 메소드 호출 시 캡처한 인자 값 검증
Mockito.verify(someClass).anotherMethod(captor.capture());

// 캡처한 인자 값 가져오기
SomeObject capturedArgument = captor.getValue();

// 인자 값 검증
assertThat(capturedArgument.getProperty()).isEqualTo(expectedValue);

위의 코드에서 SomeClass는 모킹한 클래스이고, someMethod는 특정 메소드입니다. ArgumentCaptor를 사용하여 anotherMethod가 호출될 때 전달된 SomeObject 인자 값을 캡처하고, 캡처한 값과 예상값을 비교하여 인자 값이 변경되었는지 확인할 수 있습니다.

더 자세한 내용은 Mockito의 공식 문서를 참고하여 확인할 수 있습니다. Mockito Documentation