在流程/单元测试中跳过“延迟()”

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

我正在尝试进行单元测试,我意识到 delay() 没有在 runTest{} 中被跳过。经过一些测试,我意识到这是因为流量。但我不知道这种行为。这里有一个重现的例子。

@Test
fun `Trying to skip delay`() = runTest {
    runBlocking {
        var i = 0
        flow<Unit> {
            if(i < 10) {
                i++
                println("Emit d'exception $i")
                throw Exception()
            }
        }.retry {
            delay(2000)
            true
        }.collect {}
    }
}

如何让这段代码按照我的预期工作?这意味着他的执行时间应该是几秒左右(不是 10*2000)

致以诚挚的问候

kotlin unit-testing coroutine flow
© www.soinside.com 2019 - 2024. All rights reserved.