0

我正在尝试在 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.webInterfacefalse,因为application.conf文件默认设置为 true。但是 FakeApplication 没有获得新的配置值。

知道我在那里缺少什么吗?

4

3 回答 3

3

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

object Config {

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

}
于 2012-11-11T19:43:40.293 回答
1

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

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

object Config {

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

}
于 2012-11-12T13:25:22.197 回答
0

传入MapFakeApplication是 aMap[String, String]并且您正在从配置中请求一个布尔值。我怀疑该值没有被拾取,因为它没有正确的类型。如果你尝试会发生什么

Play.configuration.getString("enable.webInterface")

反而 ?

于 2012-11-12T21:16:57.577 回答