객체의 메서드를 여러 번 호출하는 로직이 있을 때,
사용되는 메서드를 순서대로 확인하고 싶을 때가 있을 수 있다.
(하지만 구현 사항을 너무 깊게 확인하는 것일 수 있으니 정말 필요한 검증인지 충분히 고민해봐야한다)
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')
}
}
})
'Java & Kotlin > Kotlin' 카테고리의 다른 글
[MockK] mock 객체가 호출되지 않았음을 검증하기 (1) | 2022.10.21 |
---|---|
JPA entity의 VO로 Kotlin value class 사용하기 (3) | 2022.06.01 |
[MockK] 인자 값 그대로 리턴하기 (0) | 2022.04.14 |
observable, vetoable를 통한 프로퍼티 변경 감지 (0) | 2021.11.06 |
by lazy를 통해 지연 초기화 적용하기 (0) | 2021.11.06 |
댓글