首页 > 解决方案 > Mockito:模拟一个可调用的参数

问题描述

要测试的 Kotlin 函数:

suspend fun <T: Any> handleSomething(call: suspend () -> Result<T>) {

    if (call.invoke() == "Something") {
        ...
    }
    else {
        ...
    }
}

我想在这里模拟通话。通常我会嘲笑:

val call = Mockito.mock(SomeClass::class.java)

但我不知道参数是这样的功能

标签: unit-testingkotlinmockingmockito

解决方案


原始答案:https ://stackoverflow.com/a/53306974/11377112

这是模拟 lambda 函数的方式:

val call = Mockito.mock<suspend () -> Result<T>>()

handleSomething(call)

verify(call)()
// Or verify(call).invoke(any()) to be explicit

推荐阅读