首页 > 解决方案 > Scala 测试:guiceApplicationBuilder 没有用测试配置替换应用程序配置

问题描述

我正在从 Java 过渡到 Scala 并尝试编写一些功能/回归测试。虽然,最初,我试图修复一些预先存在的测试,就像测试运行时一样,但它们使用的是实际的 application.config 而不是 testApplication.conf。

这是编写测试的方式:

class ClientValidationTests extends PlaySpec with OneAppPerSuite with MockitoSugar {

  val myConfigFile = new File("test/resources/testApplication.conf")
  val parsedConfig = ConfigFactory.parseFile(myConfigFile)
  val configuration = ConfigFactory.load(parsedConfig)

  override lazy val app: Application = new GuiceApplicationBuilder()
    //.configure(Configuration.apply(ConfigFactory.parseFile(new File("test/resources/testApplication.conf")).resolve()))
    .overrides(bind[Configuration].toInstance(Configuration(configuration)))
    .overrides(bind[ApprovalsClient].to[MockApprovalsClient])
    .overrides(bind[ClientDAO].to[MockClientDAO])
    .build()


  "The validation in the getListForClientWeb method for the web  service" must {
    "throw a UserNotPermittedForActionException when an client does not belong to the provided org" in {
      val clientWebService = app.injector.instanceOf[ClientWebService]
      val clientDao = app.injector.instanceOf[ClientDAO]


      val clientId = -1


      //Verify that mock dao routes do as expected
      clientDao.getId(clientId) mustBe List(-1)

    }
  }
}

这是 application.conf 和 testApplication.conf 存在的文件结构:

project-root
- app
  - conf
    -application.conf
- test
  - resources
    - testApplication.conf

这些是这里使用的库:

scalaVersion := "2.11.6"




ivyScala := ivyScala.value map { _.copy(overrideScalaVersion = true) }

libraryDependencies ++= Seq(
  jdbc,
  //anorm dependency
  "com.typesafe.play"       %% "anorm"        % "2.5.3",
  "org.scalatestplus"       %% "play"         % "1.4.0-M4"  % "test",
  "org.mockito"              % "mockito-core" % "1.10.19"   % "test",
  "com.microsoft.sqlserver"  % "mssql-jdbc"   % "6.4.0.jre8"
)

有什么见解吗?

标签: scalaplayframeworkscalatest

解决方案


推荐阅读