RxJS Observables の Chai 確認
ChaiRx は Chai を拡張し、Rx.TestScheduler
を使用して RxJS Observable ストリームから放出物をテストするためのシンプルなユーティリティメソッド emit
を追加します。
import Rx from 'rx';
import chai from 'chai';
import chaiRx from 'chai-rx';
chai.use(chaiRx);
const { onNext, onCompleted } = Rx.ReactiveTest;
const scheduler = new Rx.TestScheduler();
const xs = scheduler.createHotObservable(
onNext(150, 1),
onNext(210, 2),
onNext(220, 3),
onCompleted(230)
);
// Note we'll start at 200 for subscribe, hence missing the 150 mark
const output = scheduler.startScheduler(() => xs.map(x => x * x), {
created: 100,
subscribed: 200,
disposed: 300
});
expect(output).to.emit([
onNext(210, 4),
onNext(220, 9),
onCompleted(230)
]);
使用方法
expect
/ should
構文
const xs = scheduler.createHotObservable(onNext(250, { 'foo': 'bar' }), onError(300, new Error('An error')));
const output = scheduler.startScheduler(() => xs);
// expect
expect(output).to.emit([
onNext(250, { 'foo': 'bar' }),
onError(300, ({error}) => error.message === 'An error')
]);
// should
output.should.emit([
onNext(250, { 'foo': 'bar' }),
onError(300, ({error}) => error.message === 'An error')
]);
言語チェーン
const const xs = scheduler.createHotObservable(onNext(250));
const output = scheduler.startScheduler(() => xs);
// with `not`
expect(output).to.not.emit([
onNext(300)
]);
インストール
npm install chai-rx
ES6 インポート
import chai from 'chai';
import chaiRx from 'chai-rx';
chai.use(chaiRx);
AMD
var chai = require('chai');
var chaiRx = require('chai-rx');
chai.use(chaiRx);
<script>
タグ
ChaiRx を <script>
タグと、Chai 自体のタグの後に直接追加する場合、自動的に Chai にプラグインされ、使用可能になります。
<script src="chai.js"></script>
<script src="chai-rx.js"></script>