Ho un progetto webapp che utilizza rxjs5 per implementare un flux e attualmente sto cercando soluzioni per scrivere test di unità su di esso.Utilizzo del metodo rxjs5 di test del marmo all'interno di un altro progetto
In realtà, ho implementato osservabili personalizzati all'interno, per esempio:
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();
}
vorrei testarlo utilizzando il marble testing way e scrivere qualcosa di simile (ho preso un esempio di esempio da repository 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);
});
});
La mia domanda è:
E 'possibile utilizzare il metodo di prova in marmo (con operatori come hot
, cold
e così via ...) al di fuori del progetto rxjs5. Non capisco come usare questo simpatico strumento nel mio progetto.
Grazie per il vostro aiuto.
Si può, ma non è molto ergonomico al momento. Fondamentalmente hai bisogno di un'istanza di 'TestScheduler' e contiene tutti i metodi' createHotObservable' e 'expectObservable'. Quindi chiami 'flush()' sullo scheduler per farlo affermare. –
Vedo, grazie. Consiglieresti di usare questo metodo per testare gli osservabili in questo momento? O hai intenzione di esporre i test di marmo in futuro? –
si potrebbe sicuramente usare questo metodo per testare osservabili in questo momento, lo siamo. Non è ancora molto ergonomico farlo ancora. –