Testing mock:验证在协同例程中调用的方法

Testing mock:验证在协同例程中调用的方法,testing,kotlin,coroutine,mockk,Testing,Kotlin,Coroutine,Mockk,我有一个简单的对象,它提供了一个挂起函数来模拟延迟的网络请求,然后从该对象调用另一个方法 class CoroutinesObject { suspend fun doApiCall() { delay(1000) println("Hello from API") val apiResult = "result #1" callMe(apiResult) } fun callMe(result: String) { println("[${Thre

我有一个简单的对象,它提供了一个挂起函数来模拟延迟的网络请求,然后从该对象调用另一个方法

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()) }
}