我刚刚升级到 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[?]

最佳答案

这只是 play.api.test.Helpers.awaitorg.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)
    }

  }
}

关于playframework-2.2 - Play Framework 2.2 - 功能测试因类型不匹配而失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19230026/

10-10 20:24