[英]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.