我测试期货的方法是使用 value1。我迁移到play2.2。我发现,我习惯的测试方式已经不复存在了。@scala.deprecated("使用 scala.concurrent.Promise 代替。", "2.2")
任何帮助将不胜感激。
奥利弗
我测试期货的方法是使用 value1。我迁移到play2.2。我发现,我习惯的测试方式已经不复存在了。@scala.deprecated("使用 scala.concurrent.Promise 代替。", "2.2")
任何帮助将不胜感激。
奥利弗
您可以按照文档中的描述实现 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
}
}
}
您还可以覆盖单个测试场景的默认超时,如下所示:
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)
从 play 2.4~, ,play.api.test.Helpers._
提供了一些实用程序,例如contentAsJson
,如果您正在等待类型contentAsString
,contentAsBytes
可以使用这些实用程序。这会处理等待,但您仍然需要设置隐式超时值。Future
play.api.mvc.Result