Kotest 현재시간 인스턴트 리스너(Current Instant Listeners) 확장

현재시간 인스턴트 리스너(Current Instant Listeners) 확장에 대해 소개한다.

현재시간 인스턴트 리스너

엔티티의 생성 날짜 설정과 같은 여러 가지 이유로 java.time 클래스에 있는 now 정적 함수를 사용해야 할 때가 있다.

data class MyEntity(
    creationDate: LocalDateTime = LocalDateTime.now()
)

하지만 그 값을 테스트하고 싶을 때는 어떻게 해야 할까? now 호출할 때마다 값이 달라진다!

그래서, 이를 위해 Kotest는 ConstantNowListenerwithConstantNow 함수를 제공한다.

코드를 실행하는 동안 테스트하려는 값은 항상 now이 될 것이다.

val foreverNow = LocalDateTime.now()

withConstantNow(foreverNow) {
    LocalDateTime.now() shouldBe foreverNow
    delay(10) // Code is taking a small amount of time to execute, but `now` changed!
    LocalDateTime.now() shouldBe foreverNow
}

또는, 모든 테스트에 대해 리스너를 사용할 수도 있다:

override fun listeners() = listOf(
    ConstantNowTestListener(foreverNow)
)

참조




최종 수정 : 2024-04-14