gpt4 book ai didi

testing - Mockk:在协同程序中验证调用的方法

转载 作者:行者123 更新时间:2023-12-02 13:19:27 25 4
gpt4 key购买 nike

我有一个简单的对象,该对象提供了一个暂停功能来模拟延迟的网络请求,然后从该对象调用另一个方法。

class CoroutinesObject {

suspend fun doApiCall() {
delay(1000)
println("Hello from API")
val apiResult = "result #1"

callMe(apiResult)
}

fun callMe(result: String) {
println("[${Thread.currentThread().name}] call me with result: $result")
}

}

我想编写一个简单的测试,该测试应验证是否已调用 callMe方法。
class CoroutinesTest {

@Test
fun doApiCall_callsCallMe() {
val obj = CoroutinesObject()
runBlocking {
obj.doApiCall()
}

coVerify { obj.callMe("result #1") }
}

}

不幸的是,测试失败,但出现以下异常,我不确定为什么会发生这种情况。
io.mockk.MockKException: Missing calls inside verify { ... } block.

任何人都知道发生了什么问题以及如何编写能够验证所调用方法的测试?

最佳答案

好的,似乎是我的对象缺少了模拟对象。以下测试有效:

@Test
fun doApiCall_callsCallMe() {
val obj = spyk(CoroutinesObject())
runBlocking {
obj.doApiCall()
}

coVerify { obj.callMe(any()) }
}

关于testing - Mockk:在协同程序中验证调用的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59876264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com