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