https://github.com/kwonoj/rxjs-testscheduler-compat
RxJS v4 TestScheduler interface for RxJS v5
https://github.com/kwonoj/rxjs-testscheduler-compat
Last synced: over 1 year ago
JSON representation
RxJS v4 TestScheduler interface for RxJS v5
- Host: GitHub
- URL: https://github.com/kwonoj/rxjs-testscheduler-compat
- Owner: kwonoj
- License: mit
- Created: 2016-09-29T18:43:38.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2018-09-19T22:42:26.000Z (almost 8 years ago)
- Last Synced: 2025-04-23T00:12:55.539Z (over 1 year ago)
- Language: TypeScript
- Homepage:
- Size: 136 KB
- Stars: 12
- Watchers: 1
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://circleci.com/gh/kwonoj/rxjs-testscheduler-compat/tree/master)
[](https://codecov.io/gh/kwonoj/rxjs-testscheduler-compat)
[](https://www.npmjs.com/package/@kwonoj/rxjs-testscheduler-compat)
# RxJS-TestScheduler-Compat
`rxjs-testscheduler-compat` provides RxJS v4's [test scheduler interface](https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/testing/testscheduler.md) to v5 version of [RxJS](https://github.com/ReactiveX/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
```sh
npm install @kwonoj/rxjs-testscheduler-compat
```
# Usage
You can import `TestScheduler` and other helpers to create test cases.
```js
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
```js
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`](https://github.com/ReactiveX/rxjs/blob/master/src/testing/TestMessage.ts)
and `subscribe` returns [`SubscriptionLog`](https://github.com/ReactiveX/rxjs/blob/master/src/testing/SubscriptionLog.ts)
## Scheduler instance functions
- `TestScheduler::start()` -> `TestScheduler::flush()`
- does not support scheduler's instance methods for scheduling such as `scheduleFuture`, `schedulerRecursive`, `schedulePeriodic`... except `scheduleAbsolute`, `scheduleRelative`, `startScheduler`
# Building / Testing
Few npm scripts are supported for build / test code.
- `build`: Transpiles code to ES5 commonjs to `dist`.
- `build:clean`: Clean up existing build
- `test`: Run unit test. Does not require `build` before execute test.
- `test:cover`: Run code coverage against test cases
- `lint`: Run lint over all codebases
- `lint:staged`: Run lint only for staged changes. This'll be executed automatically with precommit hook.
- `commit`: Commit wizard to write commit message