Я пытаюсь выполнить тестирование тестовой программы Kotlin, использующей delay()
. Для модульного теста я не забочусь о delay()
, это просто замедляет тест. Я бы хотел каким-то образом запустить тест, который фактически не задерживается при вызове функции delay()
.
Я попытался запустить сопрограмму coroutine, используя специальный контекст, который делегирует CommonPool:
class TestUiContext : CoroutineDispatcher(), Delay {
suspend override fun delay(time: Long, unit: TimeUnit) {
// I'd like it to call this
}
override fun scheduleResumeAfterDelay(time: Long, unit: TimeUnit, continuation: CancellableContinuation<Unit>) {
// but instead it calls this
}
override fun dispatch(context: CoroutineContext, block: Runnable) {
CommonPool.dispatch(context, block)
}
}
Я надеялся, что смогу просто вернуться из метода context delay()
, но вместо этого он вызывает мой метод scheduleResumeAfterDelay()
, и я не знаю, как делегировать его планировщику по умолчанию.