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)

次のように、期間を受け付けるplusminusを通じてclockを制御できる。

clock.plus(6.minutes)

時計は変更可能であり、plusまたはminusを使用すると内部状態が変更される点に注意する必要がある。


参照