【发布时间】:2018-06-22 16:20:20
【问题描述】:
我有:
val observable: Observable[Int] = Observable.from(List(5))
我可以通过测试测试输入列表确实传递给了 observable:
materializeValues(observable) should contain (5)
materializeValues 在哪里:
def materializeValues[T](observable: Observable[T]): List[T] = {
observable.toBlocking.toIterable.toList
}
现在,如果我从未来创建一个 observable,由于测试超时,我似乎无法使用 materializeValues 进行测试。所以如果我有:
val futVal = Future.successful(5)
val observable: Observable[Int] = Observable.from(futVal)
materializeValues(observable) should contain(5)
它超时并且没有通过测试。物化这两个可观察的过程有什么不同,导致我无法阻止它?
另外,测试 observable 的惯用方式是什么?有没有不打电话toBlocking的办法?
【问题讨论】:
-
由于
Future的Observable超时,我无法重现此行为。也许您对隐含的ExecutionContext有一些问题?同时提供minimal reproducible example 总是一个好主意。 -
这里有一个要点:gist.github.com/ShahOdin/74fb61e61f98f65261f491d73628d993
ExecutionContext来自AsyncTestSuite
标签: scala rx-java reactive-programming scalatest rx-scala