Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 带有参数的Kotlin lambda的Mocktito ArgumentCaptor_Android_Function_Lambda_Mockito_Kotlin - Fatal编程技术网

Android 带有参数的Kotlin lambda的Mocktito ArgumentCaptor

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

我试图在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)
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,请检查此页面上的解决方案,它为我修复了:)