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 {} – 它没有被使用