Tôi đang cố gắng để đơn vị kiểm tra một coroutine Kotlin sử dụng delay()
. Đối với các bài kiểm tra đơn vị tôi không quan tâm đến các delay()
, nó chỉ làm chậm kiểm tra xuống. Tôi muốn chạy thử nghiệm theo cách nào đó không thực sự trì hoãn khi gọi delay()
.Đơn vị thử nghiệm một coroutine Kotlin với sự chậm trễ
Tôi cố gắng chạy coroutine sử dụng một bối cảnh tùy chỉnh mà các đại biểu để 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)
}
}
Tôi đã hy vọng tôi chỉ có thể trở lại từ phương pháp bối cảnh của tôi delay()
, nhưng thay vào đó nó đang gọi phương pháp scheduleResumeAfterDelay()
của tôi, và tôi don' t biết cách ủy quyền cho trình lập lịch mặc định.
Bạn không thể chỉ định thời gian chờ trì hoãn có thể định cấu hình để trong bài kiểm tra của mình, bạn có thể chọn một bản rất nhỏ? – s1m0nw1
@ s1m0nw1 Có, nhưng tôi muốn có một giải pháp chung, và không phải sửa đổi mã của tôi như thế. –
@eoinmullan, Bạn có thể chia sẻ một dự án git tối thiểu cho giống nhau không? –