Я пытаюсь выполнить тестирование тестовой программы 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) } }
Я надеялся, что могу просто вернуться из метода delay()
моего контекста, но вместо этого он вызывает мой метод scheduleResumeAfterDelay()
, и я не знаю, как делегировать его планировщику по умолчанию.