我把它放在生产服务器上之后尝试测试我的Play 2.5 app。基本上我只想运行在我的ApplicationSpec.scala中使用生产服务器设置编写的相同测试。我按照文档但未能创建应用程序实例:
import play.api.test.Helpers.{GET => GET_REQUEST, _}
import play.api.test._
class ProductionSpec extends PlaySpec with OneServerPerSuite {
implicit override lazy val app =
new GuiceApplicationBuilder().disable[EhCacheModule].router(Router.from {
case GET(p"/") => Action { play.api.mvc.Results.Ok("ok") }
}).build()
"AuthController" should {
"initialize tables" in {
val init = route(app, FakeRequest(GET, "/init")).get
status(init) mustBe OK
}
}
}
错误是
ProductionSpec.scala:25: not found: value GET
...
ProductionSpec.scala:25: value p is not a member of StringContext
如何测试在生产环境中运行的应用程序?
答案 0 :(得分:0)
问题在于混合GETs
并且您正在测试一条路线并请求其他路线
首先,您有两个GETs
(每个库中一个)
其次,您初始化此路线GET(p"/")
但请求此路线route(app, FakeRequest(GET, "/init")).get
我修复了代码并且可以正常工作
import org.scalatestplus.play._
import play.api.test._
import play.api.test.Helpers._
import play.api.mvc._
import play.api.inject.guice.GuiceApplicationBuilder
import play.api.routing._
import play.api.routing.sird._
import play.api.cache.EhCacheModule
import play.api.libs.ws.WSClient
class ProductionSpec extends PlaySpec with OneServerPerSuite {
implicit override lazy val app =
new GuiceApplicationBuilder().disable[EhCacheModule].router(Router.from {
case play.api.routing.sird.GET(p"/init") => Action { play.api.mvc.Results.Ok("ok") }
}).build()
"AuthController" should {
"initialize tables" in {
val init = route(app, FakeRequest(play.api.test.Helpers.GET, "/init")).get
status(init) mustBe OK
}
}
}
您应该知道何时使用每个GET
我希望这会有所帮助