DBに時刻を保存したりログを送信したりするときに現在時刻をSystem.currentTimeMillis()を実行して現在時刻を取得します。mockkでモックする場合はスタティックモックで実行しようとすると正しくモックしてくれません。

fun returnTime() {
  mockkStatic(System::class)
  every { System.currentTimeMillis() } returns 1L
  assertEquals(System.currentTimeMillis(), 1L) // StackOverflowErrorが発生し失敗する
}

System.currentTimeMillis()はシステムのネイティブメソッドなのでモックすることができません。このような場合はobjectでラップしてモックできるようにします。

object SystemTime {
  fun current() = System.currentTimeMillis()
}

fun returnTime() {
  mockkObject(SystemTime)
  every { SystemTime.current() } returns 1L
  assertEquals(1L, SystemTime.current())
}

とにかくobjectでラップしてしまえば他の場合でも使えそうですね。

https://github.com/mockk/mockk/issues/98