我正在尝试在Kotlin上进行测试:

verify(myInterface).doSomething(argumentCaptor.capture())
capture.value.invoke(0L)

doSomething在哪里:
doSomething((Long) -> Unit)

如何为此创建ArgumentCaptor?现在我正在做这个
inline fun <reified T : Any> argumentCaptor() = ArgumentCaptor.forClass(T::class.java)!!
    val captor = argumentCaptor<(Long) -> Unit>()

    verify(mainApiInterface!!).downloadUserProfilePicture(captor.capture())
    captor.value.invoke(0L)

但是我正在获取java.lang.IllegalStateException:captor.capture()不能为null

我还尝试集成了 mock kotlin,但是出现了PowerMockito错误:

最佳答案

像这样使用mockito-kotlin似乎可以工作:

    val myService = mock<MyInterface>()

    myService.doSomething {
        println(it)
    }

    verify(myService).doSomething(capture { function ->
        function.invoke(123)
    })

编辑:删除了不必要的argumentCaptor<(Long) -> Unit>().apply {}-未使用

10-07 12:02