Как протестировать метод, сочетающий в себе RxJava и Suspend?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как протестировать метод, сочетающий в себе RxJava и Suspend?

Сообщение Anonymous »

Итак, у меня есть простой тест, в котором я пытаюсь проверить результат ошибки, примерно так:

Код: Выделить всё

   @Test
fun `test`() {
every { Util.fetchLocation()} returns Single.error(Exception())

val resultErrors = testableClass.testableFun().test().errors()

Assert.assertTrue(resultErrors.size == 1)
Assert.assertTrue(resultErrors.firstOrNull() is Exception)
}
Внутри testableClass вызывает метод, который я высмеивал.
Проблема в том, что внутри этого класса мне пришлось сопоставить RxJava Single с приостановкой развлечения, а после этого приостановить развлечение to Single примерно так:

Код: Выделить всё

    private suspend fun getString(): String{
return "string"
}

private fun getIntAsSingle(): Single {
return Single.just(2)
}

private suspend fun mapSingleToSuspend(){
getIntAsSingle().await()
}

private suspend fun awesomeMethod(): String{
return getString() + mapSingleToSuspend().toString()
}

private fun mapSuspendToSingle(): Single{
return rxSingle {
awesomeMethod()
}
}
Метод rxSingle взят из библиотеки kotlinx.coroutines.rx2
Другого способа сделать это нет, потому что мне приходится использовать результат первой приостановки развлечения с результатом первого Single, и после этого возвращаемое значение должно быть Single
Я думаю, проблема связана с методом ожидания RxJava, потому что, когда я попробовал отладить тест, тест результат сработал раньше, чем была вызвана функция, содержащая метод await().
Внутри тестового класса я использовал это в методе setUp() для RxJava, но это не помогло :

Код: Выделить всё

        RxAndroidPlugins.setMainThreadSchedulerHandler { Schedulers.trampoline() }
RxJavaPlugins.setIoSchedulerHandler { Schedulers.trampoline() }
Для тестирования я использую JUnit4 с библиотекой макетов.

Подробнее здесь: https://stackoverflow.com/questions/773 ... uspend-fun
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»