我正在测试返回流的挂起函数。我能够在 runTest 范围内收集该流,但此测试永远不会结束,并在一段时间后给出超时错误。
suspend fun getData() : Flow<DemoData>{
//return flow
}
这里测试中
"test getData operation" {
runTest {
repo.getData().collect{
it shouldNotBe null
}
}
这个测试永远不会完成并给出如下错误
等待 10 秒后,测试协程尚未完成,有活动的子作业:[ScopeCoroutine{Active}@46b3a424]
如果测试永远不会结束并在 10 秒后超时,请将
backgroundScope
与 UnconfinedTestDispatcher
一起使用。
backgroundScope.launch(UnconfinedTestDispatcher(testScheduler)) {
repo.getData().collect{
it shouldNotBe null
}
}
您可以参考此链接了解backgroundScope以及更多有关流量测试的技巧。