У меня есть проект webapp, который использует rxjs5 для реализации flux, и в настоящее время я ищу решения для написания модульных тестов на нем.Использование метода мрамора 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
, cold
и т. Д.) За пределами проекта rxjs5. Я не понимаю, как использовать этот хороший инструмент в моем проекте.
Благодарим за помощь.
Вы можете, но на данный момент это не очень эргономично. В принципе вам нужен экземпляр «TestScheduler», и на нем есть все методы «createHotObservable» и «expectObservable». Затем вы вызываете 'flush()' в планировщике, чтобы заставить его утверждать. –
Я вижу, спасибо. Вы бы рекомендовали использовать этот метод для проверки наблюдаемых прямо сейчас? Или вы планируете подвергнуть мраморному тестированию в будущем? –
Вы можете определенно использовать этот метод для проверки наблюдаемых прямо сейчас, мы есть. Пока просто не очень эргономично. –