【发布时间】:2016-08-24 13:05:21
【问题描述】:
我有以下代码要测试:
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())这一行?
【问题讨论】:
标签: android unit-testing mockito junit4 rx-java