我想以一种可测试的方式在函数中获取时间戳。使用像getTimeMillis这样的函数在测试中不起作用,因为runTest会跳过延迟。另一方面,TestScope.currentTime
只在测试中起作用。我需要一种在两种情况下都有效的方法。
suspend fun getCurrentTime(): Long {
return // what to do here?
}
@Test
fun testMyCode() = runTest {
delay(20)
assertThat(this.currentTime).isEqualTo(20)
assertThat(getCurrentTime()).isEqualTo(20)
}
我找到了DelayController,但它已被弃用。是否有其他方法从当前CoroutineContext获取时间戳?
1条答案
按热度按时间t1qtbnec1#
我想我找到了一个可行的方法:
你可以这样使用它:
我仍然很惊讶这不是一个语言特性tbh。