1

是否有测试异步insert使用MongoDB的斯卡拉驱动1.1 MongoDB中收取任何好的战略:如何测试异步Mongo查询?

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?并在集成测试的情况下?

+0

您可以订阅不同的方法,然后将observable变成一个'Future'和'Await.result'。 –

+0

你如何将观察变成未来? – Randomize

回答

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进口。

+0

我做不到。我认为你必须用'toFuture'替换'subscribe'。未来将以可观察的方式工作。 – Randomize

+0

@Randomize是的,你是对的。我混淆了API。 –