使用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 */
})
任何模拟建议在测试中运行吗?嘲笑观察者?在集成测试的情况下?
答案 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
。