Как проверить метод с Kotlin лямбда-вызовами, которые возвращают Observable? - PullRequest
1 голос
/ 20 февраля 2020

Как проверить метод getInfo (id)?

fun getInfo(id: String): Observable<List<Item>> =
        interactor.getSomeData { token, userId ->
             repository.getTransaction(token, id, userId)
        }

fun <T> getSomeData(func: (token: String, userId: Long) -> Observable<T>): Observable<T> =
        getAnotherData()
            .flatMap { userId ->
                secureRequest { token -> func(token, userId) }
             }

Когда я пытаюсь проверить этот метод:

@Test
fun getInfoTest() {
        val data = Observable.empty<List<Item>>()

        val function2: (String, Long) -> Observable<List<Item>> = mock {
            on { invoke(token, userId) } doReturn data
        }

        interactor.getInfo(id)
            .test()

        argumentCaptor<Observable<List<Item>>>().apply {
            verify(function2, times(1)).invoke(token, userId)
        }
    }

Я получаю сообщение об ошибке:

Требуется, но не вызывается: function2.invoke (" токен ", 123л); -> на InteractorTest.when getInfoTest (InteractorTest.kt: 81) На самом деле, с этим макетом было нулевое взаимодействие.

Требуется, но не вызывается: function2.invoke ("token", 123L); -> at InteractorTest.getInfoTest (InteractorTest.kt: 81) На самом деле, с этим макетом было нулевое взаимодействие.

...