Jes*_*ral 5 lambda android function mockito kotlin
我正在尝试在 Kotlin 上对此进行测试:
verify(myInterface).doSomething(argumentCaptor.capture())
capture.value.invoke(0L)
Run Code Online (Sandbox Code Playgroud)
doSomething 在哪里:
doSomething((Long) -> Unit)
Run Code Online (Sandbox Code Playgroud)
如何为此创建 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)
Run Code Online (Sandbox Code Playgroud)
但我得到 java.lang.IllegalStateException: captor.capture() must not be null
我也尝试集成 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)
})
Run Code Online (Sandbox Code Playgroud)
编辑:删除不必要的argumentCaptor<(Long) -> Unit>().apply {}-它没有被使用
| 归档时间: |
|
| 查看次数: |
4633 次 |
| 最近记录: |