Intereting Posts
Любая разница между «Subject.asObservable ()» и самим предметом «Тема»? Корда-расчет – алгоритм фазового плана Я сейчас разрабатываю приложение для Android с Kotlin, но произошла ошибка: CompilationException: не удалось встроить метод в 'readText' ClassMapper: нет setter / field для aBooleanType Свойства расширения Kotlin не работают в скрипте Kotlin Связывание представления с изменяющимся свойством контроллера Android Kotlin – Как настроить методы настройки Java-конструктора Поток Akka, выше по потоку, не производя значения Как создать экземпляр анонимного класса абстрактного класса в Котлине? Зачем нужен репозиторий и сервис + контракт Добавить фрагмент во время выполнения с причинами Kotlin «К сожалению приложение остановилось» Создайте общий наблюдаемый, который избегает множественного вызова Ссылка Kotlin Textview id не работает с неанглийскими символами Что закрывает канал kotlinx.coroutines Зачем связывать объекты буфера OpenGL?

Android JUnit тест блокирует бесконечно, когда Observable наблюдается на AndroidSchedulers.mainThread ()

Я пишу простой тест, который эквивалентен:

Test fun testObservable() { val returnedObservable = Observable.create(object : Observable.OnSubscribe<String> { override fun call(t: Subscriber<in String>) { t.onNext("hello") t.onCompleted() } }).subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) val result = returnedObservable.toBlocking().first() assertEquals("hello", result) } 

Тест блокируется бесконечно на .observeOn(AndroidSchedulers.mainThread()) когда присутствует .observeOn(AndroidSchedulers.mainThread()) .

Есть ли способ преобразовать наблюдаемый, чтобы вернуть результат?

returnedObservable свойство возвращается из вызова метода с использованием .subscribeOn и .observeOn, поэтому удаление этих параметров не является вариантом.

Я думаю, это ошибка, упомянутая здесь: https://github.com/ReactiveX/RxAndroid/issues/50

Кстати, почему вы не используете RxKotlin ?

Вы, например, будете выглядеть намного лучше:

  val returnedObservable = observable<String> { subscriber -> subscriber.onNext("hello") subscriber.onCompleted() } .subscribeOn(Schedules.io()) .observeOn(AndroidSchedulers.mainThread())