我对Scala还是很陌生,我想知道是否存在某种方法来创建虚拟Future
对象,以将isCompleted
模拟为false
。我需要这个用于测试。
目前我正在使用一个虚拟Future[Int]
是这样的:
Future({
while (true) {}
1
})
这很丑。
编辑
我有一个object
和一个变量x
,它是一个Option[Future[Int]]
。在同一个object
中,我有一种方法来检查x
与None
是否不同,是否检查它是否完成。如果将来还没有完成,它将避免在外部帮助器对象上调用方法。测试期间,此外部帮助程序对象已被模拟,我正在检查是否未调用它。为此,我目前将x
变量设置为上面编写的Future
。
答案 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进行说明。