Я предлагаю использовать оператор merge . Например, эти наблюдаемые реализуются как ReplaySubject (необязательно, может быть любой другой):
class ViewModelImpl : ViewModel {
private val colorSubject = ReplaySubject.create<Int>()
private val heightSubject = ReplaySubject.create<Int>()
override val height: Observable<Int> = heightSubject
override val color: Observable<Int> = colorSubject
override fun refresh() {
colorSubject.onNext(1)
colorSubject.onNext(2)
colorSubject.onNext(3)
heightSubject.onNext(4)
heightSubject.onNext(5)
heightSubject.onNext(6)
}
}
Для такой реализации этот тест завершится успешно:
@Test
fun refresh() {
val vm: ViewModel = ViewModelImpl()
vm.refresh()
Observable.merge(vm.color, vm.height)
.test()
.assertValues(1, 2, 3, 4, 5, 6)
}
И этот тест выполняется с ошибкой:
@Test
fun name() {
val vm: ViewModel = ViewModelImpl()
vm.refresh()
Observable.merge(vm.color, vm.height)
.test()
.assertValues(4, 5, 6, 1, 2, 3)
}