Mocktito ArgumentCaptor Kotlin lambda与参数
我试图在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()不能为空
我也尝试整合mockito-kotlin,但我得到一个PowerMockito错误:
在org.mockito.internal.MockitoCore的类层次结构中找不到名为“reported”的实例字段。
像这样使用mockito-kotlin似乎工作:
val myService = mock<MyInterface>() myService.doSomething { println(it) } verify(myService).doSomething(capture { function -> function.invoke(123) })
编辑:删除不必要的argumentCaptor<(Long) -> Unit>().apply {}
– 它没有被使用