2017-03-21 1 views
1

Diese Frage bezieht sich auf RxJS5.Wie kann ich RxJS5 testen, wenn ich Versprechungen verwende?

Kontext: Ich habe versucht mit TestScheduler, alles funktioniert gut, bis ich die Versprechen einstecken.

Nehmen wir zum Beispiel "someFunction" aus dem Beispiel unten. Wie würde ich die erwartete Ausgabe innerhalb von 1 Minute validieren (ohne tatsächlich 1 Minute im Test warten zu müssen)?

const asyncFunction = new Promise((resolve) => 
    setTimeout((() => resolve(1)), 0) 
); 

const someFunction =() => 
    Rx.Observable.fromInterval(15000) 
    .flatMap(each => Rx.Observable.from(asyncFunction())) 
    .map(each => each + 1) 

Antwort

0

Ich denke, diese Antwort fasst im Grunde alles, was Sie wissen müssen: How do I test a function that returns an observable using timed intervals in rxjs 5?

Einfach gesagt, sollten Sie dem Benutzer ermöglichen, benutzerdefinierte einstellen verzögern dachte sogar, der Standardwert 15000 sein kann:

const someFunction = (delay = 15000) => 
    Rx.Observable.fromInterval(delay) 
    ... 

Dann für die TestSheduler müssen Sie Verzögerung <= 750 verwenden, weil 750 als die maximale virtuelle Zeit hardcoded ist. Siehe die oben verlinkte Antwort für weitere Details.

+0

Danke, das ist nützliche Information, da ich Probleme mit längeren Verzögerungen hatte! In der verknüpften Antwort werden jedoch keine Versprechungen erwähnt, und in meiner Situation arbeiten Tests auch mit geringen Verzögerungen nicht mit Observablen, die auf Versprechungen basieren. –

+0

Können Sie den Code posten, den Sie versucht haben und der nicht funktioniert? – martin

Verwandte Themen