3
私は単体テストを書くと次のように試験されたコンポーネントのコードがある(レトロフィットから)観測を模擬するRxAndroid - java.lang.IllegalStateException:別の戦略は、既に
を必要としています登録された:
getApiRequestObservable()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(...)
ユニットテストで
(JVMに対してそうAndroidSchedulers
は使用できません)私はそれがすべて同期させる必要があるので、私のテストは次のようになります。実行するには
@Test
public void testSomething() {
doReturn(mockedResponse).when(presenter).getApiRequestObservable();
presenter.callApi();
verify(object,times(1)).someMethod();
}
これは、私がセットアップ()メソッドにフックを登録する必要があります。
@Before
public void setUp() throws Exception {
// AndroidSchedulers.mainThread() is not available here so we fake it with this hook
RxAndroidPlugins.getInstance().registerSchedulersHook(new RxAndroidSchedulersHook() {
@Override
public Scheduler getMainThreadScheduler() {
return Schedulers.immediate();
}
});
// We want synchronous operations
RxJavaPlugins.getInstance().registerSchedulersHook(new RxJavaSchedulersHook(){
@Override
public Scheduler getIOScheduler() {
return Schedulers.immediate();
}
});
}
しかし、私は明らかに2つのフックを登録することが許されておりませんので、これは上記の例外がスローされます。その周りには何か方法はありますか?