[kotlin] Mockito의 코틀린에서의 spy 기능 활용 방법

Mockito는 자바 개발자들 사이에서 인기 있는 mocking 프레임워크 중 하나입니다. Mockito를 사용하면 테스트 중에 가짜 객체(Mock 객체)를 생성하고 이를 사용하여 다른 객체와 상호작용할 수 있습니다. 이번에는 Mockito에서 제공하는 spy 기능을 코틀린에서 어떻게 활용하는지 살펴보겠습니다.

Spy란 무엇인가요?

Spy는 Mockito에서 제공하는 기능으로, 실제 객체를 모킹하면서도 객체의 일부분은 원본 메서드를 실행하도록 할 수 있습니다. 다시 말해, spy를 이용하면 객체의 실제 메서드를 호출하면서 동시에 해당 메서드의 호출 여부를 확인하거나 반환값을 변경할 수 있습니다.

코틀린에서의 Spy 기능 활용 방법

코틀린에서는 Mockito를 사용하여 spy 객체를 생성하고 다음과 같이 활용할 수 있습니다.

import org.junit.jupiter.api.Test
import org.mockito.Mockito

class ExampleClass {
    fun originalMethod(): String {
        return "실제 메서드 호출됨"
    }
}

@Test
fun testSpy() {
    val example = ExampleClass()
    val spy = Mockito.spy(example)
    
    Mockito.`when`(spy.originalMethod()).thenReturn("대체된 반환값")
    
    println(spy.originalMethod())   // 출력값: "대체된 반환값"
}

위 코드에서는 ExampleClass를 spy 객체로 만들고 있는데, originalMethod가 호출되면 “대체된 반환값”을 반환하도록 하고 있습니다.

Spy를 사용하면, 객체의 일부분을 수정할 수 있는 유연성을 제공받으면서도 해당 부분의 동작을 테스트할 수 있습니다.

Spy를 사용하는 경우에는 실제 메서드를 호출하는 것이므로, 주의하여 사용해야 합니다. 실제 메서드의 호출 여부나 반환값을 변경하는 용도로 사용해야 합니다.

이상으로 Mockito의 spy 기능을 코틀린에서 활용하는 방법에 대해 살펴보았습니다.

참고문헌: