1
改造コールのテストケースを書く際に問題が発生しています。retrofitを同期可能にする方法
私は、テストケースが合格するように、retrofitを同期可能なものにしたいと思っています。現在、レトロフィットコールバックが来てテストケースが失敗する前に、テストケースの実行が完了しています。
mainThreadSched set to **Schedulers.immediate()** and
ioSched set to **Schedulers.immediate()**
:
mainThreadSched set to **AndroidSchedulers.mainThread()** and
ioSche set to **Schedulers.io()**
テストコードの場合:私は、次のように実際のテストコードのdiffernetのスケジューラを注入するためにダガーを使用しています
**TestClient.getWeatherData(cityName)
.observeOn(mainThreadSched)
.subscribeOn(ioSched)
.subscribe(this::onLoadSuccess, this::onLoadError);**
:ここ
は改造呼び出しですSchedulers.immediate()
にスケジューラを設定してもテストケースが失敗することがあります。私はここで何か間違っていますか?またはこのテストを行うための別の方法がありますか?
'Schedulers.trampoline()'を試しましたか? '即時'は適切なスケジューラーではないので(眠り、再帰的/再入可能な使用をサポートしていないので)、謎のハングアップを起こしやすい。 – akarnokd
この質問を見てください:http://stackoverflow.com/questions/36873806/unttest-mock-rxjava-object-in-usecase-object 'toBlocking'を使うか、' TestSubscriber.awaitTerminalEvent() 'を使うことができます。 。 – marwinXXII
あなたのコードから 'subscribeOn(ioSched)'を削除してください。したがって、すべてがメインスレッド自体からコールされます –