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초동안 기다려야 한다. 만약 시간이 길다면 어떻게 해야할까?
무작정 기다리면서 하는 건 테스트가 아니다..우린 빨리 결과를 받아야 한다. 그래서 나온게 타임머신 기능이 나왔다.
다음장에서 계속한다.
'스터디 > RxJava2' 카테고리의 다른 글
[RxJava2] 디버깅 하는 기본적인 방법 (1) | 2017.10.22 |
---|---|
[RxJava2]TestSubscriber 을 이용해서 시간을 조절 해보자 (0) | 2017.10.22 |
[Rxjava2]Blocking Functions (0) | 2017.10.22 |
[RxJava2]Test시 Blocking Subscriber 방법 (0) | 2017.10.22 |
[RxJava2]연산자를 오버로딩해서 구현해보자. (0) | 2017.10.22 |