繁体   English   中英

测试可观察性仅评估一次

[英]Test observable evaluated only once

我们正在使用rx-java,但是测试Observable是否仅被评估一次存在一个问题。

我们具有以下服务签名:

class A {
  Observable<String> computeA();
}

class B {
  Observable<Void> computeB(String inputA)
}

class C {
  Observable<Void> computeC(String inputA)
}

在我们的例子中,我们有一个调用服务A的服务,并将该服务的结果用作对另外两个服务B和C的输入。我们要检查服务A仅被调用一次。

我们尝试使用AtomicInteger作为模拟服务A的Observable的计数器或仅模拟Observable.OnSubscribe来检查调用调用的时间来进行此操作,但是该测试变得很难读取。

问题是:有没有更清洁的方法来进行这种测试?

我们通常通过添加一个

source
.doOnSubscribe(() -> counter.getAndIncrement())
.op()
.op()
...

在所需的地方,待事情平静下来后再检查计数器值。

请注意,我们有一个称为publish()的运算符,该运算符可确保对源进行一次订阅,并且其所有副作用仅发生一次(只要connect()被调用一次)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM