Kotest Test Clock 확장

Test Clock 확장에 대해서 설명한다.

Latest Release

JVM은 인스턴스를 생성하는 데 사용되는 java.time.Clock 인터페이스를 제공한다. 시간에 의존하는 코드가 있는 경우 Instant.now() 또는 System.currentTimeMillis() 같은 것을 사용하는 대신 Clock을 사용하여 값을 생성할 수 있다.

그런 다음 테스트에서 고정 또는 제어 가능한 시계를 제공하여 테스트가 실행될 때마다 시간이 변경되는 문제를 방지할 수 있다. 실제 코드에서는 Clock.systemUTC() 등의 인스턴스를 제공하면 된다.

이를 사용하기 위해 인스턴트와 영역 오프셋을 전달하는 TestClock의 인스턴스를 생성한다.

val timestamp = Instant.ofEpochMilli(1234)
val clock = TestClock(timestamp, ZoneOffset.UTC)

다음과 같이 기간을 허용하는 plus, minus를 통해 clock를 제어할 수 있다.

clock.plus(6.minutes)

시계는 변경 가능하며 plus 또는 minus를 사용하면 내부 상태가 변경된다는 점에 주의해야 한다.


참조




최종 수정 : 2024-04-21