Scala установить значение конфигурации для конкретного теста - PullRequest
1 голос
/ 18 марта 2020

У меня есть файл reference.conf, который задает значение конфигурации как

prop {
    type = 2
}

У меня есть scala тестовый класс и под ним номер теста. Я хочу, чтобы это значение конфигурации оставалось неизменным для всех тестов, за исключением одного теста, который требует его 3. Каков наилучший способ загрузить другое значение конфигурации для одного конкретного теста? Прямо сейчас значения конфигурации загружаются автоматически, потому что я расширяю ScalatestRouteTest.

Так, как я могу создать файл конфигурации (или строку) специально для этого теста и загрузить его, указав его при загрузке конфигурации

1 Ответ

1 голос
/ 18 марта 2020

Если у вас есть контроль над Config объектом (потому что, возможно, он передается в качестве параметра), вы можете просто переопределить некоторое значение в конфигурации:

val config = ConfigFactory.load.withValue(
    "prop.type",
    ConfigValueFactory.fromAnyRef(5)
).resolve()

Вызов resolve необходим, если любой другой свойства зависят от prop.type, например:

prop.type2 = ${prop.type} + 1

Вы также можете использовать системные свойства, поскольку они сопоставляются непосредственно со значениями из конфигурации.

Это означает, что вы можете сделать что-то подобное в начале теста:

System.setProperty("prop.type", 5.toString)
ConfigFactory.invalidateCaches()

Конечно, поскольку изменение системных свойств программно не является потокобезопасным, поэтому оно не подходит для производства код, но только для тестов.

...