代码之家  ›  专栏  ›  技术社区  ›  Andre Steingress

Spring Boot 2.1-@webmvctest,无Spring Security自动配置

  •  5
  • Andre Steingress  · 技术社区  · 6 年前

    在迁移到SpringBoot2.1之前,我们在服务中使用了一些控制器测试 @WebMvcTest @AutoConfigureMockMvc :

    @WebMvcTest(SomeController.class)
    @AutoConfigureMockMvc(secure = false)
    public class SomeControllerTests { ... }
    

    这样做的效果是禁用了Spring安全配置,您可以运行MVC测试而不模拟OAuth/JWT。

    在弹簧护套2.1中, secured 属性已弃用,发行说明中提到

    […]@webmvctest查找websecurityconfigurer bean[…]。

    为了避免被否决 安全的 我们的属性和加载 WebSecurityConfigurer 我们将测试重写为:

    @WebMvcTest(
        value = SomeController.class,
        excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = WebSecurityConfigurer.class),
        excludeAutoConfiguration = MockMvcSecurityAutoConfiguration.class)
    public class SomeControllerTests { ... }
    

    问题是:SpringBoot2.1中是否有更紧凑的方法来定义这些测试?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Stephane Nicoll    6 年前

    是的,您应该接受这样一个事实,即这是朝着这个方向发展的,而不是围绕着标志被否决的事实工作。

    从SpringBoot2.1开始,如果您有Spring安全性,那么您的测试将使用您的自定义配置得到保护。实际问题是什么?

    如果您不想对某些测试进行身份验证,只需使用Spring Security的测试基础结构并添加 @WithMockUser .