将期货传递给whenReady失败

时间:2013-08-23 10:33:41

标签: unit-testing scala future scalatest

我正在尝试使用期货来编写规范,我不确定我应该如何使用Futures特性。我必须通过whenReady FutureConcept,但我无法找到如何从Future构建一个Future。文档内容如下:

  

使whenReady更广泛适用,未来的类型   接受是FutureConcept [T],其中T是承诺的值的类型   未来。将future传递给whenReady需要隐式   从您希望传递的未来类型转换(建模类型)   到FutureConcept [T]。

据我所知,我必须在FutureConceptimport 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 [?]
  •   
  • ';'预期,但发现整数文字。
  •   

我应该采取哪些不同的做法?

1 个答案:

答案 0 :(得分:24)

我发现隐式转换存在于ScalaFutures中,而不是Futures中。类声明应该是

class FutureSpec extends WordSpecLike with ScalaFutures

除此之外,还有其他一些错误。 FutureSpec也应混入Matchersres => s是一个愚蠢的拼写错误,应该是res => res