RxJS-TestScheduler-Compat
rxjs-testscheduler-compat
provides RxJS v4's test scheduler interface to v5 version of RxJS allows to migrate existing test cases with minimum effort as well as writing new test cases for certain cases.
Install
This has a peer dependencies of rxjs@5.*.*
, which will have to be installed as well
npm install @kwonoj/rxjs-testscheduler-compat
Usage
You can import TestScheduler
and other helpers to create test cases.
import * as Rx from 'rxjs';
import { TestScheduler, next, complete } from '@kwonoj/rxjs-testscheduler-compat';
const scheduler = new TestScheduler();
const observer = scheduler.createObserver();
const subject = scheduler.createHotObservable(
next(20, 'a'),
next(40, 'b'),
next(60, 'c'),
complete(80)
);
subject.subscribe(observer);
scheduler.advanceTo(30);
As this does not patches anything in RxJS v5's test scheduler, you can use both if it's needed
import * as Rx from 'rxjs';
import { TestScheduler as CompatScheduler } from '@kwonoj/rxjs-testscheduler-compat';
const v5Scheduler = new Rx.TestScheduler(...);
const v4Scheduler = new CompatScheduler();
...
Migrating from RxJS v4 test scheduler
There are few changes in api surfaces to conform with v5's scheduler interface as well as enhance conviniences.
ReactiveTest helper functions
ReactiveTest.onNext(value)
->next(value)
ReactiveTest.onError(value)
->error(value)
ReactiveTest.onCompleted(value)
->complete(value)
ReactiveTest.subscribe(value)
->subscribe(value)
Notification factory method (next
, error
, complete
) returns implementaiton of TestMessage
and subscribe
returns SubscriptionLog
Scheduler instance functions
TestScheduler::start()
->TestScheduler::flush()
- does not support scheduler's instance methods for scheduling such as
scheduleFuture
,schedulerRecursive
,schedulePeriodic
... exceptscheduleAbsolute
,scheduleRelative
,startScheduler
Building / Testing
Few npm scripts are supported for build / test code.
build
: Transpiles code to ES5 commonjs todist
.build:clean
: Clean up existing buildtest
: Run unit test. Does not requirebuild
before execute test.test:cover
: Run code coverage against test caseslint
: Run lint over all codebaseslint:staged
: Run lint only for staged changes. This'll be executed automatically with precommit hook.commit
: Commit wizard to write commit message