delay()
을 사용하는 Kotlin 코 루틴을 단위 테스트하려고합니다. 유닛 테스트에서는 delay()
을 신경 쓰지 않고 테스트를 느리게 진행합니다. delay()
이 호출 될 때 실제로 지연되지 않는 방법으로 테스트를 실행하고 싶습니다. 단위 테스트 지연으로 Kotlin 코 루틴을
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()
방법을 부르고, 나는 '돈 기본 스케줄러에 위임하는 방법을 알고 있습니다.
지연 시간 제한을 구성 할 수 없으므로 테스트에서 매우 작은 것을 선택할 수 있습니까?! – s1m0nw1
@ s1m0nw1 예,하지만 일반적인 솔루션을 사용하고 코드를 수정하지 않아도됩니다. –
@eoinmullan, 같은 git 프로젝트를 공유 할 수 있습니까? –