티스토리 뷰

안녕하세요 Hani입니다.

RxTest의 TestScheduler의 start, TestableObserver를 알아볼 거예욥.

 

 


TestScheduler

TestScheduler는 TestScheduler의 시간축에서 이벤트를 관찰하는 TestableObserver를 생성할 수 있습니다.

자신을 생성인자로 하여 TestableObserver를 생성할 수 있으며

TestableObserver는 발생한 이벤트들을 on 메서드를 통해 전달받아 events 프로퍼티에 저장합니다.

 

 

 

 


TestableObserver

TestScheduler의 start(created: subscribed: disposed: create: ) 메서드를 호출하면

start의 create 클로저에 넘겨준 것으로 Observable을 생성하고

이 Observable에서 방출한 이벤트를 받는 TestableObserver를 생성하여 반환합니다.

 

 

 

 

 

예시 테스트 코드를 보면

0부터 시작하는 가상의 시간 (scheduler)를 생성하고

해당 시간축에서 42 이벤트를 한 번 방출하고 끝나는 ObservableConvertibleType을 전달인자로 넣어 호출하고 있습니다.

 

start 내부에서는

created 시간에 Observable이 생성되고

subscribed 시간에 Observer가 Observable을 구독하고

disposed 시간에 구독이 종료됩니다.

 

 

 

 

created, subscribed, disposed의 시간은 지정해주지 않으면 고정되어 있습니다.

testJust_Immediate의 테스트가 200 TestTime에 42를 방출한 이유도 

200 TestTime에 subscribe이 되었기 때문입니다.

(disposed TestTime을 200으로 지정하면 이벤트가 발생하지 않았을 것)

(또한 Observable은 ColdObservable이기 때문에 구독을 한 상태여야 이벤트를 방출)

 

 

 

 

 


RxTest로 테스트하고 싶은 것 중에

Observable이 방출한 이벤트가 예상한 이벤트와 일치하는가

를 알아봤습니다.

 

 

 


References

https://github.com/ReactiveX/RxSwift/tree/main/RxTest

 

댓글