は注意点がいくつかありますが、次のように、あなたの機能をテストすることができます。
const Rx = require('rxjs');
const chai = require('chai');
function timeRange(start, end, interval = 1000, scheduler = Rx.Scheduler.async) {
return Rx.Observable.interval(interval, scheduler)
.map(n => n + start)
.take(end - start + 1)
}
let scheduler = new Rx.TestScheduler(chai.assert.deepEqual);
let source = timeRange(2, 8, 50, scheduler);
let values = {'2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8};
scheduler.expectObservable(source).toBe('-----2----3----4----5----6----7----(8|)', values);
scheduler.flush();
いくつかのポイントが気づか:
は
機能は現在、4つの引数を取ります。間隔とTestScheduler
を渡すために使用する必要があるScheduler
。
TestScheduler
は、オブジェクトを比較する深いにメソッドを取得する必要があります。これはNotification
オブジェクトの配列を比較するために使用されます。
許容最大時間がhardcoded as 750であるため、1000
は使用できません。これはただの仮想時間であり、リアルタイムとは無関係であることに注意してください。このテストで使用している50
は50ms
と同じではありません。私たちはちょうどその内部に収まる必要があります750
時間枠。
次に大理石試験を代表的な大理石試験として行います。詳細については、https://github.com/ReactiveX/rxjs/blob/master/doc/writing-marble-tests.mdを参照してください。デフォルトのRxJS演算子と同じグローバルmocha
関数を使用することはできません。
大理石のテストではデフォルトで文字列を使用するため、値を指定する必要があり、深い等価性を保証するために整数を強制する必要があります。
あなたは、これは1本の大理石の値変更して失敗したことをテストすることができます。
let scheduler = new TestScheduler((actual, expected) => {
console.log('Actual:', actual, '\n\n', 'Expected:', expected);
chai.assert.deepEqual(actual, expected);
});
:また
let values = {'2': 42, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8};
を、あなたがコンソールに印刷して、通知オブジェクトが何であるかを見ることができますRxJSを使用する5 mocha
ヘルパー
現在、RxJS 5はテストヘルパーmocha
を公開していません。私は実際に(ダイアグラム画像を生成することを含めて)現在取り組んでいる別のプロジェクトでそれを実際に使用しています。ここで見ることができますhttps://github.com/martinsik/rxjs-extraにpackage.json
私はどのようなスクリプトを使用しています。それはうまくいきますが、セットアップは少し難解です。 RxJS 5アーカイブをダウンロードし、いくつかのファイルをコピーし、couple of filesでパッチを適用します。 mocha
テストの既定のオプションは、mocha.opts
で、RxJS 5のオリジナルに基づいて設定されています。
ごめんなさい。私はrxjs 5を使用しています。あなたはrxjs 5相当物を知っていますか?あなたが提供したリンクはrxjs 4です。 – khoomeister
更新されたドキュメントはありませんが、タイプはまだあります。例えば。 'rxjs/testing/TestScheduler 'からの' {TestScheduler}のインポート –