scala play:测试的汇总conf文件

时间:2017-04-19 11:47:28

标签: scala playframework

我的应用程序由两个项目组成:rootcommonsroot取决于commons。制作我的build.sbt以便聚合主要和测试:

lazy val commons = RootProject(file("../commons"))

lazy val root = (project in file("."))
  .enablePlugins(PlayScala)
  .aggregate(commons)
  .dependsOn(commons % "test->test;compile->compile")

问题是,当我从commons运行root次测试时,他们不会继承root application.conf中定义的conf。示例:

class EventSourceTest extends FlatSpec with Matchers with ScalaFutures {

  val env: Environment = play.api.Environment.simple()
  val configuration: Configuration = Configuration.load(env) // doesn't contain root conf
  // [...]
}

如何使commons测试使用application.confroot定义的配置?

2 个答案:

答案 0 :(得分:2)

我相信你正在努力解决你不应该遇到的问题。如果commons和root是2个不同的项目(即使它们是子项目单个sbt项目),您的测试也不应跨越项目边界。

如果您正在考虑集成级别测试,那么从 root 调用的 commons 代码应该负责加载它所依赖的配置。

答案 1 :(得分:0)

当您运行sbt时,您可以选择指定要加载的conf文件,并且可以提供读取此配置并加载相应conf文件的自定义逻辑。

作为首发,您可以做以下事情:

Option(System.getProperty("config.file")) match {
 case Some(path) => ConfigFactory.parse(...=)

 ...
}

你打电话给你的测试

sbt -Dconfig.file=/path/to/config/file test