Как назвать конкретную лямбду в макет класса?

У меня есть следующий текстовый файл с параметрами:

@Test fun lostClick() { //setup parameters val func0 : (Unit) -> Unit = { println("fun0")} val func1 : (String) -> Unit = { println("fun1")} val func2 : (Int) -> Unit = { println("fun2")} whenever(deviceInteractor.reserveBadCaseDevice( //equals `when` eq(workerId), eq(DeviceCondition.LOST), eq(func0), eq(func1), eq(func2))).then({ func0.invoke(Unit) }) presenter.lostClick() //view reaction verify(viewState).showLoad(true) // verify(viewState).setButtonGiveEnabled(true) // if func0 called this verify works // verify(viewState).setButtonTakeEnabled(false) // verify(viewState).setButtonCrashEnabled(false) // verify(viewState).setButtonLostEnabled(false) // verify(viewState).showLoad(false) } 

Но это не работает. func0 НЕ вызывается. в моем ведущем этот метод видит это:

 fun lostClick() { reserveBadCaseUser(DeviceCondition.LOST) } private fun reserveBadCaseUser(condition: DeviceCondition) { showLoad(true) //condition == DeviceCondition.LOST deviceInteractor.reserveBadCaseDevice(mCurrentWorker?.id!!, condition, { clearCurrentDevice() validateButtonView() showLoad(false) }, { showLoad(false) viewState.showErrorToast(it) }, { showLoad(false) viewState.showErrorToast(it) }) } 

Вызов go to showLoad (true), а следующий вызов reserveBadCaseDevice не работает. Я проверил deviceInteractor в тесте и презентаторе – это одна ссылка, ведущие имеют значения необходимости (workerId и DeviceCondition), но метод reserveBadCaseDevice не вызывает все.

Как протестировать мой метод презентатора reserveBadCaseUser, когда этот класс использует метод с тройной лямбда-функцией? Или как правильно издеваться над устройствомInteractor, который будет называться первой lamda?

метод в deviceInteractor выглядит следующим образом:

 fun reserveBadCaseDevice(workerId: Int, condition: DeviceCondition, result: (Unit) -> Unit, errorText: (String) -> Unit, errorId: (Int) -> Unit) { val data = ReservedWorkerData( DeviceState.TAKE, condition, null, workerId) val call = apiService.postAsyncReserveDevice(data, prefManager.getPrefToken()) call.enqueue(object : Callback<Void> { override fun onResponse(call: Call<Void>?, response: Response<Void>?) { response?.let { if (response.isSuccessful) { result.invoke(Unit) } else { errorText(apiErrorUtil.parse(response).message) } } } override fun onFailure(call: Call<Void>?, t: Throwable?) { errorId(apiErrorUtil.parse(t).message) } }) } 

как оказалось, решение было довольно простым. Спасибо за хорошее сообщество, вы действительно помогли!

 doAnswer{ println("invoke") val args = it.getArguments() (args[2] as (Unit) -> Unit).invoke(Unit) }.whenever(deviceInteractor).reserveBadCaseDevice( eq(workerId), eq(DeviceCondition.LOST), any(), any(), any()) 
Intereting Posts
disable: Сканирование аннотаций kotlin forEach внутри для каждого в Котлин Тип тестового элемента контейнера в котлине Есть ли такой синтаксис, как #region #endregion в Котлине? Переопределить метод Java со сложным типом в Котлине У Котлина есть сборщик мусора? Если да, то на каком алгоритме он основан? Ошибка проверки Котлина Многие небольшие модули или несколько больших модулей для лучшей производительности? Возврат из forEachLine Почему Android Studio конвертирует некоторые примитивные типы Kotlin как условно-безопасный оператор? Как передать null в Observable с типом NULL в RxJava 2 и Kotlin Как получить класс выполнения переменной в Котлин? Какой путь лучше между сопутствующим объектом и потехой без класса в Котлин? Объявление функциональных литералов с типичными входными параметрами в Котлине Аннотации getAnnotation для Java, используемые для метода Kotlin, возвращают null