测试:FakeApplication忽略additionalConfiguration

时间:2012-11-11 17:46:34

标签: scala playframework playframework-2.0 specs2

我正在尝试在Play 2.0 w / Scala项目上添加测试:

"Application" should {

    "return 404 on the index Action if web is disabled " in {
      running(FakeApplication(additionalConfiguration = Map(("enable.webInterface" -> "false")) )) {

        Config.IS_WEB_ENABLED must beFalse

        val result = controllers.Application.index()(FakeRequest())

        status(result) must equalTo(NOT_FOUND)
        contentType(result) must beSome("text/html")
        charset(result) must beSome("utf-8")
      }
    }
}

Config.IS_WEB_ENABLED定义为:

object Config {

  lazy val IS_WEB_ENABLED = Play.configuration.getBoolean("enable.webInterface").getOrElse(false)

}

正如您所看到的那样,我尝试将enable.webInterface的配置设置覆盖为false,因为application.conf文件默认设置为true。但是FakeApplication没有获得新的配置值。

关于我在那里缺少什么的想法?

3 个答案:

答案 0 :(得分:3)

使用def代替lazy val,也许你之前使用过Config.IS_WEB_ENABLED并且它是用true初始化的,只返回相同的结果,因为它是一个val。

object Config {

  def IS_WEB_ENABLED = Play.configuration.getBoolean("enable.webInterface").getOrElse(false)

}

答案 1 :(得分:1)

我怀疑Play.configuration没有考虑假申请。

所以试试这个(使用current):

object Config {

  lazy val IS_WEB_ENABLED = Play.current.configuration.getBoolean("enable.webInterface").getOrElse(false)

}

答案 2 :(得分:0)

Map中传递的FakeApplicationMap[String, String],您正在从配置中请求布尔值。我怀疑价值没有被提取,因为它没有正确的类型。如果你尝试

会发生什么
Play.configuration.getString("enable.webInterface")

相反?