2014-01-04 5 views
2

Мне было интересно, есть ли удобный способ проверить, завершено ли наблюдаемое. Например, я есть тестЧто такое хороший способ проверить, является ли наблюдаемое завершено?

test("An observable that tracks another observable is completed") 
{ 
     val sub = PublishSubject[Boolean](false) 
     val newOb = sub recovered // This methods returns an Observable[Try[T]] 


     val res = scala.collection.mutable.ListBuffer[Try[Boolean]]() 
     val cr = newOb subscribe(v => res += v, t => assert(false, "There shouldn't be an exception"),() => println("Stream Completed")) 
     sub.onNext(true) 
     sub.onNext(false) 
     sub.onNext(true) 
     sub.onCompleted 
     assert(res.toList === List(Success(true), Success(false), Success(true))) 
     newOb.isEmpty subscribe { v => assert(v == true, "Stream should be completed") } 
    } 

Метод recovered возвращает Наблюдаемое [Попытка [Т]] и является расширением стандартной Наблюдаемое. Я хочу проверить, что Observable [Try [T]] завершается, когда исходный Observable завершен.

Итак, я написал тест с темой, в которой я публикую несколько значений, а затем окончательно завершу. Есть ли простой способ проверить, что newOb также завершен? В Observable нет такого метода, как isCompleted.

ответ

1

В этом суть наблюдателя шаблонов, когда есть вызов onCompleted, запускается соответствующий обработчик, и только можно понять, что Observer завершен. Но я слышал, что если Observer был завершен и привязан к обработчику, он работает немедленно, но я думаю, что он уже реализован на более низком уровне, где asJavaObserver.

Эта ссылка может помочь: Netflix RxJava

Смежные вопросы