1
我有下面的代碼進行測試:如何選擇單元測試正確的調度
public class MyInteractor implements Interactor<String, Boolean> {
private MyRepository repository;
@Inject
public MyInteractor(MyRepository repository) {
this.repository = repository;
}
@Override
public Observable<Boolean> createObservable(final String s) {
return Observable.create(new Observable.OnSubscribe<Boolean>() {
@Override
public void call(Subscriber<? super Boolean> subscriber) {
Boolean response = repository.call(s);
subscriber.onNext(response);
subscriber.onCompleted();
}
})
.subscribeOn(Schedulers.io());
}
}
我寫了下面的單元測試:
@RunWith(MockitoJUnitRunner.class)
public class MyInteractorTest {
@Mock
MyRepository repository;
@InjectMocks
MyInteractor interactor;
@Before
public void init() {
when(repository.call(any(String.class)))
.thenReturn(true);
}
@Test
public void myTest() throws Exception {
Observable<Boolean> interactorObservable =
interactor.createObservable("hello");
TestSubscriber<Boolean> subscriber = TestSubscriber.create();
interactorObservable.subscribe(subscriber);
subscriber.assertNoErrors();
subscriber.assertCompleted();
subscriber.assertReceivedOnNext(singletonList(true));
}
}
當我運行單元測試失敗在subscriber.assertCompleted()
。但是,如果我刪除subscribeOn(Schedulers.io())
MyInteractor.createObservable()
一切工作正常。
有沒有辦法使測試運行完成,而不是刪除行subscribeOn(Schedulers.io())
?