私はfluxを実装するためにrxjs5を使用するwebappプロジェクトを持っていますが、現在はユニットテストを書くためのソリューションを探しています。大理石テストrxjs5メソッドを別のプロジェクトの中で使用する
実際に、私は例えば、内部のカスタムの観測を実施しています:
function getActivityObservable(events, timeout) {
return Observable.create((observer) => {
const deb = debounce(() => observer.next(false), timeout || DEFAULT_TIMEOUT);
const sub = events.subscribe((e) => {
if (!e) {
deb.cancel();
observer.next(false);
} else {
observer.next(true);
deb(e);
}
});
return() => {
if (sub) sub.unsubscribe();
if (deb) deb.cancel();
};
}).distinctUntilChanged();
}
を私はmarble testing wayを使用して、それをテストし、のようなものを書きたい(私はrxjsリポジトリからサンプル例を取った)
describe("getActivityObservable",() => {
it("should debounce by selector observable",() => {
const e1 = hot("--a--bc--d----|");
const e1subs = "^ !";
const expected = "----a---c--d--|";
expectObservable(e1.debounce(getTimerSelector(20))).toBe(expected);
expectSubscriptions(e1.subscriptions).toBe(e1subs);
});
});
私の質問は次のとおりです。
は、hot
のようなオペレーターと(を大理石の試験方法を使用することが可能ですなど)をrxjs5プロジェクトの外側に配置します。私は私のプロジェクトでこの素敵なツールを使う方法を理解していません。
ありがとうございました。
あなたはすることができますが、それは非常に現時点では人間工学ではありません。基本的には、 'TestScheduler'のインスタンスが必要で、' createHotObservable'メソッドと 'expectObservable'メソッドとそのすべてがあります。次に、スケジューラー上で 'flush()'を呼び出してアサートさせます。 –
ありがとう、ありがとう。このメソッドを使用して現在の観測値をテストすることをお勧めしますか?あるいは、大理石のテストを将来公開する予定ですか? –
あなたは確かにこのメソッドを使って観測値をテストすることができます。まあまあ、人間工学にはあまり似ていません。 –