객체의 메서드를 여러 번 호출하는 로직이 있을 때,
사용되는 메서드를 순서대로 확인하고 싶을 때가 있을 수 있다.
(하지만 구현 사항을 너무 깊게 확인하는 것일 수 있으니 정말 필요한 검증인지 충분히 고민해봐야한다)
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 |
댓글