RxJava 2 überschreibt den E / A-Scheduler im Komponententest

9

Ich versuche den folgenden RxKotlin / RxJava 2-Code zu testen:

%Vor%

Ich versuche, die Scheduler wie folgt zu überschreiben:

%Vor%

Beim Ausführen des Tests wird jedoch der folgende Fehler angezeigt:

%Vor%

Hat jemand dieses Problem erlebt?

Der Test funktionierte einwandfrei, wenn RxKotlin / RxJava 1 verwendet wurde und der folgende Scheduler überschrieb:

%Vor%

Danke!

    
Alex B 07.04.2017, 18:40
quelle

2 Antworten

18
___ answer43285631 ___

Ich habe es herausgefunden! Es hatte damit zu tun, dass in diesem Code:

%Vor%

SchedulerProvider gab ein SchedulerProvider zurück, das Folgendes ausgab: %code% . Da RxJava 2 keine %code% -Werte mehr akzeptiert, wurde %code% nicht aufgerufen. Ich habe %code% geändert, um %code% zurückzugeben, und die Scheduler-Überschreibung wie folgt aktualisiert:

%Vor%

Jetzt sind die Tests bestanden!

    
___ tag123rxjava ___ RxJava - Reaktive Erweiterungen für die JVM - eine Bibliothek zum Erstellen von asynchronen und ereignisbasierten Programmen mit beobachtbaren Sequenzen für die Java VM. Es kann unter https://github.com/ReactiveX/RxJava gefunden werden ___ qstntxt ___

Ich versuche den folgenden RxKotlin / RxJava 2-Code zu testen:

%Vor%

Ich versuche, die Scheduler wie folgt zu überschreiben:

%Vor%

Beim Ausführen des Tests wird jedoch der folgende Fehler angezeigt:

%Vor%

Hat jemand dieses Problem erlebt?

Der Test funktionierte einwandfrei, wenn RxKotlin / RxJava 1 verwendet wurde und der folgende Scheduler überschrieb:

%Vor%

Danke!

    
___ tag123rxkotlin ___ RxJava-Bindungen für die Kotlin-Programmiersprache ___ qstnhdr ___ RxJava 2 überschreibt den E / A-Scheduler im Komponententest ___ antwort43320828 ___

Ich schlage vor, dass Sie einen anderen Ansatz wählen und Ihren Schedulern eine Abstraktionsebene hinzufügen. Dieser Typ hat einen schönen Artikel darüber: Ссылка

Es würde ungefähr so ​​in Kotlin aussehen

%Vor%

Und dann überschreiben Sie das mit Ihrer eigenen Implementierung von SchedulerProvider:

%Vor%

Und eins zum Testen von Klassen:

%Vor%

Ihr Code würde so aussehen, wo Sie RxJava aufrufen:

%Vor%

Und Sie überschreiben einfach Ihre Implementierung von %code% basierend darauf, wo Sie es testen. Hier ist ein Beispielprojekt als Referenz, ich verbinde die Testdatei, die die testbare Version von %code% verwenden würde: Ссылка

    
___
Solidak 10.04.2017, 10:30
quelle
4

Ich habe es herausgefunden! Es hatte damit zu tun, dass in diesem Code:

%Vor%

validate(data) gab ein Observable zurück, das Folgendes ausgab: emitter.onNext(null) . Da RxJava 2 keine null -Werte mehr akzeptiert, wurde flatMap nicht aufgerufen. Ich habe validate geändert, um Completable zurückzugeben, und die Scheduler-Überschreibung wie folgt aktualisiert:

%Vor%

Jetzt sind die Tests bestanden!

    
Alex B 07.04.2017 19:19
quelle

Tags und Links