第一次测试Rx,所以请给一些建议。
需要在模型中测试可观察链,结果给出 21 个数据对象:
public Observable<BaseUnit> exec(int inputNumber) {
return getListObservable(inputNumber).subscribeOn(Schedulers.computation())
.flatMap(resultList -> getOperationsObservable()
.flatMap(operationElem -> getResultListObservable(resultList)
.flatMap(listElem -> Observable.just(listElem)
.flatMap(__ -> calculate(operationElem, listElem)
.subscribeOn(Schedulers.computation())))));
}
这是我尝试过的一些方法。
首先尝试(这里我在获取结果时遇到问题并单独检查它们,因为每个对象内部的计算结果未知):
TestObserver<BaseUnit> observer = repository.exec(1000000)
.test()
.awaitDone(5, TimeUnit.SECONDS)
.assertNoErrors()
.assertValueCount(21)
.assertComplete();
第二种方式:
ArrayList<BaseUnit> result = new ArrayList<>();
Observable<BaseUnit> observable = repository.exec(1000000);
observable.subscribe(result::add);
try {
TimeUnit.MILLISECONDS.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
assertNotNull(result);
assertEquals(21, result.size());
// here may be some loop of "assers"
像我用时间延迟和循环指出第二种方式那样进行测试是否正确?
如何正确检查结果它给出了 21 个对象并检查数据类的某些属性大于零的条件?还有其他需要执行的检查吗?
还有一个普遍的问题:需要测试使用此模型方法的 mvp Presenter 并因此显示收到的值。如何仅使用 JUnit4 来做到这一点?