Scala虚拟未来未完成

时间:2018-08-29 12:37:51

标签: scala testing future

我对Scala还是很陌生,我想知道是否存在某种方法来创建虚拟Future对象,以将isCompleted模拟为false。我需要这个用于测试。

目前我正在使用一个虚拟Future[Int]是这样的:

Future({
    while (true) {}
    1
})

这很丑。

编辑 我有一个object和一个变量x,它是一个Option[Future[Int]]。在同一个object中,我有一种方法来检查xNone是否不同,是否检查它是否完成。如果将来还没有完成,它将避免在外部帮助器对象上调用方法。测试期间,此外部帮助程序对象已被模拟,我正在检查是否未调用它。为此,我目前将x变量设置为上面编写的Future

2 个答案:

答案 0 :(得分:5)

还有,很简单:

val f: Future[Int] = Future.never

答案 1 :(得分:3)

使用Future.never首先建议的this answer

val f: Future[Int] = Future.never

您应避免使用诺言(如最初的回答所示):

val f: Future[Int] = Promise[Int]().future

因为如果订阅了future,可能会导致内存泄漏,请参见here进行说明。