Dei*_*zan 5 mockito rx-java rx-android
我正在为Android中的RxJava observable创建单元测试.
我想从模拟中链接返回值并在observable中模拟错误/恢复值.
我这样做:
when(repository.getObservable())
.thenReturn(Observable.error(new Exception()))
.thenReturn(Observable.just(driver));
Run Code Online (Sandbox Code Playgroud)
我的观察:
return repository.getObservable()
.retryWhen(observale -> {
return observable
.zipWith(Observable.range(1, 3), Pair::create)
.flatMap(o -> {
if (o.second < count) {
return Observable.timer(1000, TimeUnit.MILLISECONDS);
}
return Observable.error(o.first);
})))
Run Code Online (Sandbox Code Playgroud)
但我只接受了Observable.error(new Exception()),甚至称该retryWhen方法3次以上.
有人知道我怎样才能测试重新发射不同的观测值以测试retryWhen操作员?
谢谢!
retryWhen()不会repository.getObservable()第二次打电话.相反,它需要Observable.error()第一次返回并重新订阅它.
为了以retryWhen()这种方式使用,您必须Observable返回一个在第一次订阅时返回错误的单个,并且在后续订阅中不会返回错误.例如,你可以这样做:
Observable.defer(new Func0<Observable<String>>() {
boolean hasBeenSubscribedTo = false;
@Override public Observable<String> call() {
if (!hasBeenSubscribedTo) {
hasBeenSubscribedTo = true;
return Observable.error(new Exception());
}
return Observable.just("Hello, world!");
}
})
.retryWhen(/* ...etc... */)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1046 次 |
| 最近记录: |