我有一个使用 rxjs5 来实现通量的 webapp 项目,我目前正在寻找在其上编写单元测试的解决方案。
事实上,我已经在里面实现了自定义的 observables,例如:
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();
}
我想使用大理石测试方式对其进行测试并编写类似的东西(我从 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);
});
});
我的问题是:
是否可以在 rxjs5 项目之外使用大理石测试方法(使用诸如 等运算符hot
... )。cold
我不知道如何在我的项目中使用这个好工具。
谢谢您的帮助。