首页 > 解决方案 > 启动 2.5。Spring yml 属性覆盖测试配置 Bean

问题描述

我有一个 WebMvcTest 测试。被测试的控制器需要一个 bean 来自动装配(我们称之为设置)。在这种情况下,bean 是一个 @ConfigurationProperties(从 yml 配置中读取值)。因此,为了运行测试,我添加了一个声明了 Settings bean 的 @TestConfiguration 静态类)。bean 的值被 application.yml 文件(或我放在 WebMvcTest 属性值上的任何属性)覆盖

@WebMvcTest(value = AController.class, properties = {
        "options.first.enabled=",
        "options.second.enabled-web-file-upload=settings_value_second"
})
public class ControllerIT{
    @TestConfiguration
    static class ITConfig{

        @Bean
        public Settings settingsBean(){
            return Settings.builder()
                    .first("a value").second("another value")
                    .build();
        }
    }

如果没有 webmvctest 中的属性,Settings bean 的值将被 application.yml 包含的任何值覆盖。如果属性在 webmvctest 注释中被覆盖,那么设置 bean 值将被那些覆盖。在上面的示例中,我希望设置 bean 具有第一个 ->“一个值”和第二个 ->“另一个值”,但它具有“settings_value_first”和“settings_value_second”

标签: javaspring-boottesting

解决方案


推荐阅读