我有一些代码如下:
def someFunctioThatIWantToUnitTest() {
val p = Promise[Int]()
val result = getFutureInt(p)
val resultFut = result.future
// I extract the content in the resultFut and do what I want
val didSomething = resultFut.get // not able to get here with my unit test
}
getFutureInt(...)如下所示:
private def getFutureInt(promise: Promise[Int]) {
blocking { // from the scala concurrent object
// here I successfully return the promise with an Int value
promise.success(2)
}
}
假设有适当的ExecutionContexts可用,我想测试someFunctioThatIWantToUnitTest方法!当我尝试调试我的单元测试时,它不允许我进入阻塞块并且我的测试返回失败。有办法解决这个问题吗?
答案 0 :(得分:0)
scala.concurrent.Await.result
会解决您的问题吗?
val myFuture = Future(1)
val result: Int = Await.result(myFuture, 1.minute)
请记住,如果您的测试由于Future.get
调用而提前失败,您可能永远不会捕获任何“未来”断点。这是因为测试可能比您预期的更早停止,顺便销毁所有执行上下文。 (我不知道内部说100%。)