Как преобразовать запись карты из yaml в свойство в Spring? - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть следующий список свойств в моем application.yml:

foo: 
  bar: 
    - 
      id: baz
      item: value
    // ...

Затем я хочу перезаписать item значение в тестах, используя @DynamicPropertySource:

    @DynamicPropertySource
    @JvmStatic
    @Suppress("unused")
    fun setupProperties(registry: DynamicPropertyRegistry) {
        registry.add("foo.bar[0].item") { "new value" }
    }

Но во время тестов я установил все остальные свойства в null, с одним элементом в массиве bar.

Я полагаю, что я неправильно ссылаюсь на запись карты в файле yaml. Интересно, как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Оказывается, в документации Spring Boot четко сказано:

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

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot -features-external-config-complex-type-merge

Это фактически означает, что мне нужно предоставить весь элемент списка:

@DynamicPropertySource
@JvmStatic
@Suppress("unused")
fun setupProperties(registry: DynamicPropertyRegistry) {
    registry.add("foo.bar[0].id") { "new baz" }
    registry.add("foo.bar[0].item") { "new value" }
    // ...
}
0 голосов
/ 23 апреля 2020

У меня нет ответа для вас, но, возможно, это поможет.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...