4

我刚刚升级到 Play 2.2,并且由于Helpers已经更改,我的测试不再编译。

import org.specs2.mutable.Specification

import play.api.test._
import play.api.test.Helpers._

import play.api.libs.ws._
import play.api.mvc.Results._

class ApplicationSpec extends Specification {
  import controllers._

  "Application" should {

    "test WS logic" in new WithServer {
      await(WS.url("http://localhost:3333").get()).status must equalTo(OK)
    }

  }
}

给出以下编译错误

type mismatch;
[error]  found   : scala.concurrent.Future[play.api.libs.ws.Response]
[error]  required: org.specs2.matcher.Matcher[?]
4

1 回答 1

6

play.api.test.Helpers.await这只是和之间的名称冲突org.specs2.matcher.FutureMatchers.await

您可以更明确地引用播放助手(或重命名您的导入):

Helpers.await(WS.url("http://localhost:3333").get()).status must equalTo(OK)

但是,以下内容可能更好,但尚未将其纳入文档:

https://github.com/playframework/playframework/blob/master/framework/src/play-test/src/main/scala/play/api/test/PlaySpecification.scala

因此,只需扩展PlaySpecification而不是Specification在您的测试中:

import org.specs2.mutable.Specification

import play.api.test._
import play.api.test.Helpers._

import play.api.libs.ws._
import play.api.mvc.Results._

class ApplicationSpec extends PlaySpecification {
  import controllers._

  "Application" should {

    "test WS logic" in new WithServer {
      await(WS.url("http://localhost:3333").get()).status must equalTo(OK)
    }

  }
}
于 2013-10-07T16:45:10.337 回答