[java] Mockito를 사용하여 특정 메소드에 전달된 인자들로 다른 메소드를 호출했을 때 특정 값을 반환하는 방법은?

우선, Mockito의 whenthenReturn 메소드를 사용하여 이를 구현할 수 있습니다. 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);
    }
}

위의 코드에서는 MyClassmethodA에서 methodB를 호출하고, 그 결과에 10을 더한 값을 반환하는 방식을 테스트하고자 합니다. MyClassTest 클래스에서는 MyClass를 Mockito의 mock 객체로 생성한 후, methodB 메소드 호출 시 반환할 값을 whenthenReturn을 사용하여 정의합니다.

그리고 methodA를 호출하여 결과를 검증하는데, 예상되는 결과는 15입니다.

이렇게 Mockito를 사용하여 특정 메소드에 전달된 인자들로 다른 메소드를 호출하고, 특정 값을 반환할 수 있습니다.

Mockito 레퍼런스 문서에서 자세한 내용을 확인할 수 있습니다.