如何测试异步Mongo查询?

时间:2016-07-15 13:59:04

标签: mongodb scala unit-testing asynchronous integration-testing

使用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 */
    })

任何模拟建议在测试中运行吗?嘲笑观察者?在集成测试的情况下?

1 个答案:

答案 0 :(得分:1)

一种可能的解决方案是调用insertOne并将Observable[T]转换为Future[T]并使用Await.result同步阻止它。此转换在ScalaObservable[T]隐式类中定义:

import org.mongodb.scala.ObservableImplicits._

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

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

请注意,这需要导入ObservableImplicits