9

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

任何帮助将不胜感激。

奥利弗

4

3 回答 3

14

您可以按照文档中的描述实现 PlaySpecification 特征。这个 trait 提供了一个方法 await。您还可以覆盖默认超时。

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
     }
   }
}
于 2014-01-13T14:23:19.283 回答
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)
于 2015-01-29T11:54:35.470 回答
0

从 play 2.4~, ,play.api.test.Helpers._提供了一些实用程序,例如contentAsJson,如果您正在等待类型contentAsString,contentAsBytes可以使用这些实用程序。这会处理等待,但您仍然需要设置隐式超时值。Futureplay.api.mvc.Result

于 2018-07-24T22:24:58.437 回答