在 runTest 范围中返回 Flow 的测试挂起函数尚未完成。过了一段时间就出现超时错误

问题描述 投票:0回答:1

我正在测试返回流的挂起函数。我能够在 runTest 范围内收集该流,但此测试永远不会结束,并在一段时间后给出超时错误。

suspend fun getData() : Flow<DemoData>{
        //return flow
    }

这里测试中

"test getData operation" {
        runTest { 
            repo.getData().collect{
                it shouldNotBe null
            }
        }

这个测试永远不会完成并给出如下错误

等待 10 秒后,测试协程尚未完成,有活动的子作业:[ScopeCoroutine{Active}@46b3a424]

unit-testing kotlin-coroutines coroutine
1个回答
0
投票

如果测试永远不会结束并在 10 秒后超时,请将

backgroundScope
UnconfinedTestDispatcher
一起使用。

backgroundScope.launch(UnconfinedTestDispatcher(testScheduler)) {
            repo.getData().collect{
                it shouldNotBe null
            }
        }

您可以参考此链接了解backgroundScope以及更多有关流量测试的技巧。

© www.soinside.com 2019 - 2024. All rights reserved.