[kotlin] 코틀린에서 람다식과 고차 함수를 사용하여 모의(mock) 테스트를 구현하는 방법

람다식과 고차 함수는 코틀린에서 강력한 기능을 제공합니다. 특히, 모의(mock) 테스트를 작성하는 데 유용하게 활용할 수 있습니다.

람다식과 고차 함수

람다식

람다식은 함수를 간결하게 표현하는 방법으로, 중괄호로 감싸진 파라미터 목록 뒤에 ->를 붙인 형태로 표현됩니다.

예를 들어, 다음은 인자로 받은 함수에 1을 더해 반환하는 고차 함수를 정의한 것입니다:

val addOne: (Int) -> Int = { it + 1 }

고차 함수

고차 함수는 다른 함수를 인자로 받거나 함수를 반환하는 함수를 말합니다. 이를 통해 함수형 프로그래밍의 장점을 활용할 수 있습니다.

예를 들어, 다음은 고차 함수 operateOnNumber를 정의하여 다른 함수를 파라미터로 받아 실행하는 예시입니다:

fun operateOnNumber(number: Int, operation: (Int) -> Int): Int {
    return operation(number)
}

모의(mock) 테스트 구현

모의(mock) 테스트는 외부 의존성을 가짜 객체로 대체하여 테스트하는 기법입니다.

람다식과 고차 함수를 활용하면 모의 테스트를 보다 간편하게 작성할 수 있습니다. 예를 들어, 다음은 모의 객체를 생성하고 특정 동작을 가로채는 방법을 보여줍니다:

class MyDependency {
    fun getData(): String {
        // 외부 리소스에 접근하여 데이터를 가져옴
    }
}

class MyClass(private val dependency: MyDependency) {
    fun performActionUsingDependency(): String {
        val mockData = "Mocked Data"
        val result = dependency.getData { mockData } // 람다식을 통해 모의 데이터 반환
        return "Result: $result"
    }
}

위의 예시에서 MyDependency 클래스의 getData 메서드에서 실제 외부 리소스 대신 람다식을 사용하여 모의 데이터를 반환하고 있습니다.

람다식과 고차 함수를 사용하면 모의(mock) 테스트를 구현하고 외부 의존성을 모의(mock) 객체로 대체하는 작업을 쉽게 할 수 있습니다.

이와 같이 모의(mock) 테스트를 통해 외부 의존성을 가진 코드를 안정적으로 테스트할 수 있도록 도와주는 람다식과 고차 함수의 강력한 기능을 활용할 수 있습니다.

참고 자료