본문 바로가기
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')
}
}
})