Typesafe Config:为单元测试目的覆盖值
Typesafe Config: Overriding values for unit testing purposes
在需要 config: Config
的 class 单元测试中,我想直观地声明(而不是在位于其他地方的配置文件中)测试的假定配置设置.
例如,我想做这样的事情:
class myClassSpec extends AnyFlatSpec{
val myTestingConfigForThisTestCase = 3L
val config = ConfigFactory.load()
.withValue("my-config-path", myTestingConfigForThisTestCase)
...
}
但是,withValue
需要一个 ConfigValue
并且基本类型和那个之间似乎没有隐式转换。
有什么简单的解决方案吗?
您可能想使用 ConfigValueFactory
- 很可能是
ConfigFactory.load()
.withValue(
"my-config-path",
ConfigValueFactory.fromAnyRef(myTestingConfigForThisTestCase)
)
虽然这不能很好地扩展 - 即,如果您需要覆盖超过 2-3 个设置,它会比 ConfigFactory.parseString
+ withFallback
:
获得更多样板
val configOverride = """
{
my-config-path: $myTestingConfigForThisTestCase
other-config {
...
}
}
"""
val config = ConfigFactory.parseString(configOverride)
.withFallback(ConfigFactory.load())
在需要 config: Config
的 class 单元测试中,我想直观地声明(而不是在位于其他地方的配置文件中)测试的假定配置设置.
例如,我想做这样的事情:
class myClassSpec extends AnyFlatSpec{
val myTestingConfigForThisTestCase = 3L
val config = ConfigFactory.load()
.withValue("my-config-path", myTestingConfigForThisTestCase)
...
}
但是,withValue
需要一个 ConfigValue
并且基本类型和那个之间似乎没有隐式转换。
有什么简单的解决方案吗?
您可能想使用 ConfigValueFactory
- 很可能是
ConfigFactory.load()
.withValue(
"my-config-path",
ConfigValueFactory.fromAnyRef(myTestingConfigForThisTestCase)
)
虽然这不能很好地扩展 - 即,如果您需要覆盖超过 2-3 个设置,它会比 ConfigFactory.parseString
+ withFallback
:
val configOverride = """
{
my-config-path: $myTestingConfigForThisTestCase
other-config {
...
}
}
"""
val config = ConfigFactory.parseString(configOverride)
.withFallback(ConfigFactory.load())