Я пытаюсь проверить это на Котлине:
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)
Но я получаю java.lang.IllegalStateException: captor.capture () не должно быть null
Я также попытался интегрировать mockito-kotlin, но я получил ошибку PowerMockito:
В иерархии классов org.mockito.internal.MockitoCore не найдено ни одного поля экземпляра с именем «сообщенный».
Использование mockito-kotlin, похожее на это, похоже, работает:
val myService = mock<MyInterface>() myService.doSomething { println(it) } verify(myService).doSomething(capture { function -> function.invoke(123) })
Изменить: удалить ненужный argumentCaptor<(Long) -> Unit>().apply {}
– он не использовался