在 Kotlin 中测试协程。如何处理延迟

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

我通过添加 kotlin 协程更改了部分代码。这就是我现在的功能:

    fun deleteDataFromDb(@PathVariable id: String) {
        val user = authUser.user
        GlobalScope.launchWithMdc {
            JwtContext(user).use {
                dataService.deleteDataFormDb(id)
            }
        }
    }

我的一项测试不起作用。这是其中的一部分:

        deleteDataFromDb(id).andExpect(
            MockMvcResultMatchers.status().isOk
        )

        getDataFromDb(id).andExpect(
            MockMvcResultMatchers.status().isNotFound
        ) //here is an error

我的测试不起作用的原因很简单。 deleteDataFromDb 该函数在执行检查之前并未结束。

处理这种延迟的最佳做法是什么?

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

嗯,对于初学者来说,永远不要使用

GlobalScope
。 使用您控制的协程作用域——通常是一个测试作用域,您可以在其中等待所有任务结束。

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