複数のテスト環境(本番、ステージング、開発)に対して異なるデータベース接続を定義したいと思います。「 sbtテスト用にsbt0.12.2の設定ファイルを指定するにはどうすればよいですか? 」という投稿を読んだ後、次のSBT設定を使用することで、以前のバージョンのPlayで可能だったようです。
val main = play.Project(appName, appVersion, appDependencies).settings(
javaOptions in Test += "-Dconfig.file=conf/test.conf"
)
しかし、Build.scalaでこの設定を使用すると、次のエラーが発生します。
not found: value javaOptions
だから私の質問は、異なるテスト環境に対して異なる接続をどのように定義できるかということです。
編集: 考えられる回避策は、テスト中にデフォルト設定を上書きすることです。これは、環境変数を使用して実行できます。
object Config {
var defaultConfig = Map(
"db.default.user" -> "user",
"db.default.pass" -> "************"
)
def additionalConfiguration(): Map[String, _] = sys.env.getOrElse("PLAY_TEST_SCOPE", "") match {
case "development" => {
defaultConfig += "db.default.url" -> "jdbc:mysql://host:3306/development"
defaultConfig
}
case "staging" => {
defaultConfig += "db.default.url" -> "jdbc:mysql://host:3306/staging"
defaultConfig
}
case "production" => {
defaultConfig += "db.default.url" -> "jdbc:mysql://host:3306/production"
defaultConfig
}
case _ => {
throw new Exception("Environment variable `PLAY_TEST_SCOPE` isn't defined")
}
}
}
そして、この構成で偽のアプリケーションを実行します。
FakeApplication(additionalConfiguration = Config.additionalConfiguration())