我知道TestSubscriber,它真的很有用,但有时会有与订阅Flowable相关的逻辑,这需要测试。
示例:
Flowable.just("Hello world!")
.subscribe(s -> System.out.println(s),
error -> {
handler.handle("Scanning files");
},
() -> {
handler.handle("Scanning files");
}
);如果我想确保handler.handle("Scanning files")被调用,那么最好的方法是什么--唯一的方法是“传统的”模仿方法吗?
模拟的问题是,如果可流动对象更复杂,包括跨多个线程执行,则很难模拟时间推进等,这是使用TestSubscriber的一个很好的原因。
发布于 2020-03-10 22:14:15
一种方法是参数化Scheduler,并在设置测试夹具时传递TestScheduler。
这样,您就可以使用advanceTimeBy等人的方法。
发布于 2020-03-10 22:19:11
您可以像往常一样使用Mockito验证您的处理程序是否已被调用:
verify(handler, only()).handle(any());问题是,您如何确保在suscribe方法结束后调用前面的代码行?
我可以看到两个选项:
blockingSubscribe而不是subscribe RxJavaPlugins)也许你可以把Thread.sleep()放在验证之前,但我不认为这是个好主意。
对我来说,TestSubscriber和TestScheduler是测试可观察性的最好方法。
https://stackoverflow.com/questions/60618768
复制相似问题