scala - 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"
)
有什么见解吗?