我正在尝试使用期货来编写规范,我不确定我应该如何使用Futures
特性。我必须通过whenReady
FutureConcept
,但我无法找到如何从Future
构建一个Future
。文档内容如下:
使whenReady更广泛适用,未来的类型 接受是FutureConcept [T],其中T是承诺的值的类型 未来。将future传递给whenReady需要隐式 从您希望传递的未来类型转换(建模类型) 到FutureConcept [T]。
据我所知,我必须在FutureConcept
和import scala.concurrent._
import scala.concurrent.ExecutionContext.Implicits.global
import org.scalatest.WordSpecLike
import org.scalatest.concurrent._
class FutureSpec extends WordSpecLike with Futures {
"A future" must {
"be a valid argument for whenReady" in {
val fut = future { 42 }
whenReady(fut) { res => s should be 42 }
}
}
}
之间进行隐式转换(这对我来说似乎不对,因为它似乎应该是样板,但这是我唯一的事情。可以做到)。我无法弄清楚如何做到这一点,FutureConcept的文档很方便地告诉我
让我走完整圈。我编写的最简单的例子是有关语法的详细信息,请参阅trait Futures的文档 这个特性提供了期货测试。
{{1}}
不能用
编译
- 类型不匹配;发现:scala.concurrent.Future [Int] required:FutureSpec.this.FutureConcept [?]
- ';'预期,但发现整数文字。
我应该采取哪些不同的做法?
答案 0 :(得分:24)
我发现隐式转换存在于ScalaFutures
中,而不是Futures
中。类声明应该是
class FutureSpec extends WordSpecLike with ScalaFutures
除此之外,还有其他一些错误。 FutureSpec也应混入Matchers
,res => s
是一个愚蠢的拼写错误,应该是res => res