In our previous examples, did you notice that testing a time-driven Observable
or Flowable
requires that time to elapse before the test completes? In the last exercise, we took five emissions from an Observable.interval()
emitting every 1 second, so that test took 5 seconds to complete. If we have a lot of unit tests that deal with time-driven sources, it can take a long time for testing to complete. Would it not be nice if we could simulate time elapses rather than experiencing them?
The TestScheduler
does exactly this. It is a Scheduler implementation that allows us to fast-forward by a specific amount of elapsed time, and we can do any assertions after each fast-forward to see what events have occurred.
Here, we create a test against Observable.interval()
that emits every minute and ultimately asserts that 90 emissions have occurred after 90 minutes. Rather than having to wait the entire 90 minutes in real time, we use TestObserver
to artificially...