如何测试异步 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
。
是否有任何好的策略来使用 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
。