2016-06-28 3 views
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()にスケジューラを設定してもテストケースが失敗することがあります。私はここで何か間違っていますか?またはこのテストを行うための別の方法がありますか?

+0

'Schedulers.trampoline()'を試しましたか? '即時'は適切なスケジューラーではないので(眠り、再帰的/再入可能な使用をサポートしていないので)、謎のハングアップを起こしやすい。 – akarnokd

+0

この質問を見てください:http://stackoverflow.com/questions/36873806/unttest-mock-rxjava-object-in-usecase-object 'toBlocking'を使うか、' TestSubscriber.awaitTerminalEvent() 'を使うことができます。 。 – marwinXXII

+0

あなたのコードから 'subscribeOn(ioSched)'を削除してください。したがって、すべてがメインスレッド自体からコールされます –

答えて

0

ObservableにBlock()。first()を追加できます。

関連する問題