Android 带有参数的Kotlin lambda的Mocktito ArgumentCaptor
我试图在Kotlin上测试这一点:Android 带有参数的Kotlin lambda的Mocktito ArgumentCaptor,android,function,lambda,mockito,kotlin,Android,Function,Lambda,Mockito,Kotlin,我试图在Kotlin上测试这一点: verify(myInterface).doSomething(argumentCaptor.capture()) capture.value.invoke(0L) 其中doSomething是: doSomething((Long) -> Unit) 如何为此创建ArgumentCaptor?现在我正在这样做 inline fun <reified T : Any> argumentCaptor() = ArgumentCaptor.f
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)
inline fun argumentCaptor()=argumentCaptor.forClass(T::class.java)!!
val captor=参数captor单位>()
验证(mainApiInterface!!)。下载UserProfilePicture(captor.capture())
captor.value.invoke(0L)
但是我得到了java.lang.IllegalStateException:captor.capture()不能为null
我还尝试集成mockito kotlin,但我得到一个PowerMockito错误:
在org.mockito.internal.MockitoCore的类层次结构中找不到名为“reported”的实例字段
这样使用似乎有效:
val myService = mock<MyInterface>()
myService.doSomething {
println(it)
}
verify(myService).doSomething(capture { function ->
function.invoke(123)
})
val myService=mock()
myService.doSomething{
println(it)
}
验证(myService).doSomething(捕获{函数->
函数调用(123)
})
编辑:删除了不必要的
argumentCaptor单元>()。应用{}
-它没有被使用,只是为了记录:PowerMock对字节码所做的事情可能会让人在使用纯java时感到头痛。我真的不想用PowerMockito来处理除javac以外的任何其他语言生成的字节码。我认为这是一个很好的解决方案,但问题是我与PowerMock有冲突,因为我在上面写的东西,我使用PowerMock是因为我在处理一些静态类。哈,那你就靠你自己了——有龙!我错过了什么<代码>捕获(ArgumentCaptor)的参数不是lambda。该解决方案不起作用。如果您没有使用mockito kotlin,请检查此页面上的解决方案,它为我修复了:)