如何测试异步 Mongo 查询?

How to test async Mongo query?

是否有任何好的策略来使用 MongoDB Scala 驱动程序 1.1 测试异步 insert 到 mongodb 集合:

driver.myCollection.insertOne(doc).subscribe(new Observer[Completed] {

      override def onNext(result: Completed): Unit = /* do something */

      override def onComplete(): Unit = /* do something */

      override def onError(e: Throwable): Unit = /* do something */
    })

在测试中向 运行 建议的任何模拟?模拟 Observable?在集成测试的情况下?

一个可能的解决方案是调用 insertOne 并将 Observable[T] 变成 Future[T] 并使用 Await.result 对其进行同步阻塞。此转换在 ScalaObservable[T] 隐式 class:

中定义
import org.mongodb.scala.ObservableImplicits._

val future = driver
              .myCollection
              .insertOne(docs)
              .toFuture()

Await.result(future, Duration(3000, MILLISECONDS))

请注意,这需要导入 ObservableImplicits