我正在使用 Scala 驱动程序为 Mongodb (1.1.1) 编写一种集成测试。
我有一个简单的插入查询,我可以使用 afuture
或observer
以这种方式管理它:
// with observer
driver.myCollection.insertOne(doc).subscribe(new Observer[Completed] {
override def onNext(result: Completed) = /* do something */
override def onComplete() = /* do something */
override def onError(e: Throwable) = /* do something */
})
// with future
val f = driver.myCollection.insertOne(doc).toFuture()
f onComplete {
case Success(successMsg) => /* do something */
case Failure(failureMsg) => /* do something */
}
}
我如何onError
在Observer
和/或Failure
中进行测试Future
?我怎样才能触发这种情况?
目前我正在使用Mongodb Embedded (flapdoodle)
.
如果我在测试开始时关闭 Mongodb,我会得到一个看起来与该错误无关的超时。
更新
我已添加WriteConcern
到集合中:
database.getCollection(myCollection).withWriteConcern(WriteConcern.ACKNOWLEDGED)
但它不会改变任何东西。
期货/观察者返回的错误是否包括超时错误(由于某些原因导致数据库或网络关闭)?