我想在Kotlin上测试一下:
verify(myInterface).doSomething(argumentCaptor.capture())
capture.value.invoke(0L)
在哪里做某事:
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
我也尝试过整合mockito-kotlin,但我收到了PowerMockito错误:
在org.mockito.internal.MockitoCore的类层次结构中找不到名为“reported”的实例字段。
答案 0 :(得分:3)
像这样使用mockito-kotlin似乎有效:
val myService = mock<MyInterface>()
myService.doSomething {
println(it)
}
verify(myService).doSomething(capture { function ->
function.invoke(123)
})
修改:删除了不必要的argumentCaptor<(Long) -> Unit>().apply {}
- 它没有被使用