0

我有以下属性列表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" }
    }

但在测试期间,我将所有其他属性设置为空值,bar数组中有一个元素。

我想我没有正确引用yaml文件中的映射条目。我想知道我怎么能做到这一点?

4

1 回答 1

0

事实证明,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" }
    // ...
}
于 2020-04-29T07:34:05.093 回答