TestObserver , TestSubscriber

이전 내용까지는 Blocking이 주된 내용이지만 이것만으로는 한계가 있다. 그래서 나온게 TestObserver 이다.

TestObserver = Observable , Single , Maybe , Completable 에서 사용된다.

TestSubscriber =Flowable 에서 사용된다.

//우선 옵저버 생성 (5초동안 아이템을 배출)
Observable<Long> source = Observable.interval(1, TimeUnit.SECONDS).take(5);

TestObserver<Long> testObserver = new TestObserver();

//아직 구독이 안된건지 체크
testObserver.assertNotSubscribed();

//이제 구독함
source.subscribe(testObserver);

//구독이 되었는지 확인
testObserver.assertSubscribed();

//종료(Terminate) 될 때까지 기다린다.
testObserver.awaitTerminalEvent();

//onCompleted가 과연 호출되었는지?
testObserver.assertComplete();

//에러가 없나?
testObserver.assertNoErrors();

//5개의 아이템을 배출했나?
testObserver.assertValueCount(5);

//5개의 예상되는 값 확인
testObserver.assertValues( 0L , 1L , 2L , 3L , 4L );

하지만 문제는 awaitTerminalEvent()를 통해 5초동안 기다려야 한다. 만약 시간이 길다면 어떻게 해야할까?

무작정 기다리면서 하는 건 테스트가 아니다..우린 빨리 결과를 받아야 한다. 그래서 나온게 타임머신 기능이 나왔다.

다음장에서 계속한다.

+ Recent posts