0

第一次测试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 来做到这一点?

4

0 回答 0