我正在尝试在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没有获得新的配置值。
关于我在那里缺少什么的想法?
答案 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
中传递的FakeApplication
是Map[String, String]
,您正在从配置中请求布尔值。我怀疑价值没有被提取,因为它没有正确的类型。如果你尝试
Play.configuration.getString("enable.webInterface")
相反?