[java] Mockito를 사용하여 특정 메소드에 전달된 인자들 중 특정 조건을 만족하는 값을 찾는 방법은?
ArgumentCaptor
는 Mockito에서 제공하는 클래스로, 메소드가 호출될 때 전달된 인자들을 캡처하여 검증하고 조작할 수 있습니다. 이를 사용하여 특정 메소드에 전달되는 인자들 중에서 원하는 조건을 만족하는 값을 찾을 수 있습니다.
다음은 Mockito를 사용하여 특정 메소드에 전달된 인자들 중 특정 조건을 만족하는 값을 찾는 예제 코드입니다.
import org.mockito.ArgumentCaptor;
// 테스트 대상 클래스
public class MyClass {
public void myMethod(int number) {
// 메소드 내용
}
}
// 테스트 코드
@Test
public void testMyMethod() {
MyClass myClass = Mockito.mock(MyClass.class);
ArgumentCaptor<Integer> argumentCaptor = ArgumentCaptor.forClass(Integer.class);
// MyClass의 myMethod를 호출할 때 전달되는 인자들을 캡처
myClass.myMethod(10);
myClass.myMethod(20);
Mockito.verify(myClass, Mockito.times(2)).myMethod(argumentCaptor.capture());
// 캡처된 인자들 중에서 조건을 만족하는 값을 찾기
List<Integer> capturedValues = argumentCaptor.getAllValues();
for (Integer value : capturedValues) {
if (value > 15) {
// 원하는 조건을 만족하는 값 처리
}
}
}
위 예제 코드에서는 ArgumentCaptor
를 사용하여 myMethod
에 전달되는 number
인자들을 캡처합니다. 그리고 그 중에서 15보다 큰 값들을 찾아 특정 조건을 만족하는 값 처리를 합니다.
참고로, ArgumentCaptor
는 캡처된 값들을 순서대로 저장하는 리스트를 제공하므로, 순서에 따른 특정 값 검증이 가능합니다.
이와 같이 Mockito의 ArgumentCaptor
를 활용하면 특정 메소드에 전달된 인자들 중에서 원하는 조건을 만족하는 값을 캡처하고 처리할 수 있습니다.
참고 자료: