[java] Mockito를 사용하여 특정 메소드에 전달된 인자들로 다른 메소드를 호출했을 때 특정 값을 반환하는 방법은?
우선, Mockito의 when
과 thenReturn
메소드를 사용하여 이를 구현할 수 있습니다. when
메소드는 특정 메소드가 호출되었을 때의 동작을 정의하고, thenReturn
메소드는 해당 메소드가 호출될 때 반환할 값을 지정합니다.
아래는 해당 방법을 구현하는 예시 코드입니다.
import org.mockito.Mockito;
// 테스트할 클래스
public class MyClass {
public int methodA(int arg1, int arg2) {
return methodB(arg1, arg2) + 10;
}
public int methodB(int arg1, int arg2) {
// 다른 작업 수행
return arg1 + arg2;
}
}
// 테스트 클래스
public class MyClassTest {
@Test
public void testMethodA() {
// Mockito mock 객체 생성
MyClass myClass = Mockito.mock(MyClass.class);
// methodB 호출 시 반환할 값을 정의
Mockito.when(myClass.methodB(Mockito.anyInt(), Mockito.anyInt())).thenReturn(5);
// methodA 호출
int result = myClass.methodA(2, 3);
// 결과 검증
Assert.assertEquals(15, result);
}
}
위의 코드에서는 MyClass
의 methodA
에서 methodB
를 호출하고, 그 결과에 10을 더한 값을 반환하는 방식을 테스트하고자 합니다. MyClassTest
클래스에서는 MyClass
를 Mockito의 mock 객체로 생성한 후, methodB
메소드 호출 시 반환할 값을 when
과 thenReturn
을 사용하여 정의합니다.
그리고 methodA
를 호출하여 결과를 검증하는데, 예상되는 결과는 15입니다.
이렇게 Mockito를 사용하여 특정 메소드에 전달된 인자들로 다른 메소드를 호출하고, 특정 값을 반환할 수 있습니다.
Mockito 레퍼런스 문서에서 자세한 내용을 확인할 수 있습니다.