我正在尝试在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 {}
-未使用