Play 2.2 - specs2 - 如何测试2.2中的期货?

时间:2013-10-02 07:31:28

标签: unit-testing scala future specs2 playframework-2.2

我测试期货的方式是使用value1。 我迁移到了play2.2。我发现,我习惯的测试方法已经消失了。 @ scala.deprecated(“使用scala.concurrent.Promise代替。”,“2.2”)

非常感谢任何帮助。

奥利弗

3 个答案:

答案 0 :(得分:13)

您可以按照documentation中的说明实施PlaySpecification特征。该特征提供了一种方法等待。您也可以覆盖默认超时。

import akka.util.Timeout
import scala.concurrent.duration._

class FooSpec extends PlaySpecification {
   override implicit def defaultAwaitTimeout: Timeout = 20.seconds

   "foo" should {
     "handle futures" {
        val result = await(Future(true))

        result should beTrue
     }
   }
}

答案 1 :(得分:2)

您还可以覆盖单个测试方案的默认超时,如下所示:

import akka.util.Timeout
import scala.concurrent.duration._

class FooSpec {
   "foo" should {
     "handle futures" with DefaultAwaitTimeout {
        override implicit def defaultAwaitTimeout: Timeout = 20.seconds
        val result = await(Future(true))

        result should beTrue
     }
   }
}

要将代码停在特定位置,请使用

 Thread.sleep(milliseconds)

答案 2 :(得分:0)

从播放2.4〜开始,play.api.test.Helpers._提供的实用程序很少,例如contentAsJsoncontentAsStringcontentAsBytes,如果您正在等待{{1} },类型为Future。这样可以等待,但是您仍然需要设置隐式超时值。