[kotlin] Mockito와 함께하는 코틀린에서의 다수의 응답값(mocking) 테스트 방법

Mockito는 Java와 Kotlin 같은 JVM 기반 언어에서 Mock 객체를 생성하고 다루는 데 사용되는 인기있는 라이브러리입니다. Mockito를 사용하면 객체의 동작을 테스트할 때 실제 응답값을 반환하는 대신 가상으로 응답값을 설정할 수 있습니다. 이를 통해 테스트를 더 쉽게 작성하고 객체 간의 의존성을 제거할 수 있습니다.

Mockito 기본개념

Mockito를 사용하면 Mockito 라이브러리에서 제공하는 mock() 메서드를 호출하여 Mock 객체를 만들 수 있습니다. 그리고 whenthenReturn을 사용해 Mock 객체의 메서드 호출에 대한 응답값을 지정할 수 있습니다.

val mockedList = mock<MutableList<String>>()
`when`(mockedList.get(0)).thenReturn("first")

Mockito를 사용한 다수의 응답값 테스트 방법

Mockito를 사용하여 다수의 응답값을 테스트하려면 thenReturn 대신 thenReturn의 변형인 thenReturn, thenReturn, …, thenReturn 메서드를 사용할 수 있습니다. 이를 통해 순차적으로 다른 응답값을 반환하도록 Mock 객체를 구성할 수 있습니다.

`when`(mockedList.size)
    .thenReturn(1)
    .thenReturn(2)
    .thenReturn(3)

위의 예제에서는 mockedList.size를 호출할 때 1, 2, 3 순서대로 다른 값이 반환됩니다.

Mockito를 사용한 예외 응답값 테스트 방법

Mockito를 사용하여 예외 응답값을 테스트하려면 thenThrow 메서드를 활용하여 특정 메서드 호출 시 예외를 발생시킬 수 있습니다.

`when`(mockedList.get(1)).thenThrow(IndexOutOfBoundsException("Index: 1, Size: 0")) 

위의 코드는 mockedList.get(1)이 호출될 때 IndexOutOfBoundsException을 발생시킵니다.

요약

Mockito를 사용하면 코틀린에서 다수의 응답값과 예외 응답값을 가진 Mock 객체를 테스트할 수 있습니다. 이를 통해 다양한 시나리오에서의 테스트를 간편하게 작성할 수 있으며, 코드의 견고성을 높일 수 있습니다.

참고 문헌: Mockito 공식 문서