본문 바로가기
Java & Kotlin/Kotlin

[MockK] 메서드 호출 순서 검증하기

by devson 2022. 4. 15.

객체의 메서드를 여러 번 호출하는 로직이 있을 때,

사용되는 메서드를 순서대로 확인하고 싶을 때가 있을 수 있다.

(하지만 구현 사항을 너무 깊게 확인하는 것일 수 있으니 정말 필요한 검증인지 충분히 고민해봐야한다)

 

MockK를 사용할 때는 verifySequence를 사용하면 mock object의 호출 순서를 확인할 수 있다.

 

import io.kotest.core.spec.style.DescribeSpec
import io.mockk.mockk
import io.mockk.verifySequence

class MyObject {
    fun fun1(value: Any) {
        println(value)
    }

    fun fun2(value: Any) {
        println(value)
    }

    fun fun3(value: Any) {
        println(value)
    }
}

class MockObjectSequentialCallTest : DescribeSpec({
    it("using verifySequence") {
        // given
        val myObjectMock = mockk<MyObject>(relaxed = true)

        // when
        myObjectMock.fun1(1)
        myObjectMock.fun2("2")
        myObjectMock.fun3('3')

        // then
        verifySequence {
            myObjectMock.fun1(1)
            myObjectMock.fun2("2")
            myObjectMock.fun3('3')
        }
    }
})

 

댓글