Как вызвать лямбда-колбэк с помощью mockk - PullRequest
0 голосов
/ 07 декабря 2018

Я создаю макет класса с mockk.На этом макете я теперь вызываю метод, который получает лямбду в качестве параметра.

Эта лямбда-функция служит в качестве обратного вызова для доставки изменений состояния обратного вызова вызывающей стороне метода.

class ObjectToMock() {
    fun methodToCall(someValue: String?, observer: (State) -> Unit) {
        ...
    }
}

Как настроить макет для вызова пройденной лямбды?

1 Ответ

0 голосов
/ 07 декабря 2018

Вы можете использовать answers:

val otm: ObjectToMock = mockk()
every {  otm.methodToCall(any(), any())} answers {
    secondArg<(String) -> Unit>().invoke("anything")
}

otm.methodToCall("bla"){
    println("invoked with $it") //invoked with anything
}

В области действия answers вы можете получить доступ к firstArg, secondArg и т. Д. И даже получить ожидаемый тип, предоставивэто как общий параметр.Обратите внимание, что я использовал invoke, чтобы сделать его более читабельным, вы также можете вызывать его как обычную функцию с пустыми скобками.

...