Scala: игра не распознает тестовые компоненты - PullRequest
0 голосов
/ 10 апреля 2020

Я перехожу с Java на Scala. Я написал простой тест для визуализации представления. Например:

import org.scalatestplus.play.PlaySpec
import org.scalatest._
import org.slf4j.LoggerFactory
import play.test.WithApplication


class EvTemplateTests extends PlaySpec{
  implicit lazy val log = LoggerFactory.getLogger(getClass)

 //run your test//run your test

 "render eval template" in {
  val html = views.html.index("Hello")
  contentType(html) must equalTo("text/html")
  contentAsString(html) must contain("Welcome to Play!")
 }
}

При компиляции похоже, что он не находит "index", "contentType", "contentAsString" и т. Д. c. Похоже, проект использует библиотеки:

lazy val thirdPartyDependencies = Seq(
jdbc,
"com.typesafe.play" %% "anorm" % "2.4.0",
"com.typesafe.play" %% "play-mailer" % "3.0.1",
"com.microsoft.sqlserver" % "mssql-jdbc" % "6.4.0.jre8",
"io.swagger" %% "swagger-play2" % "1.5.0",  // This version adds Play 2.4 support.
// ScalaTest+ Play (have to use non-release 1.4.0-M4 version for now as it is only compatible with Play 2.4)
"org.scalatestplus" %% "play" % "1.4.0-M4" % "test",
"org.mockito" % "mockito-core" % "1.10.19" % "test"
)

Могу ли я получить какое-либо понимание?

1 Ответ

2 голосов
/ 11 апреля 2020

Вы можете начать отсюда:

import controllers.AssetsFinder
import org.specs2.mutable.Specification
import play.api.Application
import play.api.inject.guice.GuiceApplicationBuilder
import play.api.mvc._
import play.api.test._
import play.api.test.Helpers._

class EvTemplateTests
    extends Specification
    with DefaultAwaitTimeout
    with FutureAwaits
    with Results {

  val application: Application = GuiceApplicationBuilder().build()

  "render eval template" in new WithApplication(app = application) {
    implicit val assetsFinder = app.injector.instanceOf[AssetsFinder]
    val html = views.html.index("Hello")
    contentType(html) mustEqual "text/html"
    contentAsString(html) must contain("Hello")
  }

}

добавьте это после jdb c в LibraryDependencies: specs2 % Test

Наиболее важной частью настройки теста здесь является implicit AssetFinder, которая получена от GuiceApplicationBuilder:

val application: Application = GuiceApplicationBuilder().build()

AssetFinder - действительно важная часть тестирования представления в PlayFramework

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...