通过多个外部调用对RxJava代码进行单元测试

时间:2018-11-22 06:48:27

标签: java unit-testing mocking rx-java reactive-programming

这是我要测试的一些RxJava代码:

public void triggerCancelOrderJob() {
        couchConnector()
            .findAbandonedOpenOrders()
            .flatMap(results -> results.rows())
            .flatMap(
                row ->
                    Observable.just(row)
                        .subscribeOn(Schedulers.io())
                        .map(
                            s -> return s.value())
                        .flatMap(
                            orderId -> {
                              return RxReactiveStreams.toObservable(
                                  serviceTokenCache
                                     .get(OrderApiConstants.SERVICE_TOKEN_CACHE_KEY)
                                      .flatMap(
                                          issueToken -> {
                                            return cancelOrderApiConnector()
                                                .invokeAPI(
                                                    RequestInputModel.builder().build(),
                                                    RequestInputModel.RequestBodyModel.builder().build());
                                          }));
                            }))
            .subscribe(//additional code)

所以发生的事情是,我运行一个异步CB查询,得到一个Observable< AsyncN1qlQueryResult >,然后我为每一行依次调用两个外部服务(第一次调用serviceTokenCache,第二次调用到cancelOrderApiConnector)。每行在单独的IO线程中运行。

注意:serviceTokenCache.get()cancelOrderApiConnector().invokeAPI()分别返回Mono

我不知道如何测试此代码。什么所有组件都需要测试?由于每一行都将在其单独的线程中运行,因此我无法全神贯注于如何测试这种异步代码。

0 个答案:

没有答案