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...