在迁移到Spring Boot 2.1之前,我们在服务中使用了几个控制器测试,@WebMvcTest并结合使用@AutoConfigureMockMvc:
@WebMvcTest(SomeController.class)
@AutoConfigureMockMvc(secure = false)
public class SomeControllerTests { ... }
Run Code Online (Sandbox Code Playgroud)
这导致Spring Security配置被禁用,您可以在不模拟OAuth/JWT的情况下运行MVC测试.
在Spring Boot 2.1中,该secured属性已弃用,发行说明中提到了该属性
[...] @WebMvcTest查找WebSecurityConfigurer bean [...].
为了避免我们的弃用secured属性和加载,WebSecurityConfigurer我们将测试重写为:
@WebMvcTest(
value = SomeController.class,
excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = WebSecurityConfigurer.class),
excludeAutoConfiguration = MockMvcSecurityAutoConfiguration.class)
public class SomeControllerTests { ... }
Run Code Online (Sandbox Code Playgroud)
问题是:在Spring Boot 2.1中有更紧凑的方法来定义这样的测试吗?
是的,您不应该解决该标志已被弃用的事实,而应该接受这样一个事实:事情正在朝着这个方向发展。
从 Spring Boot 2.1 开始,如果您有 Spring Security,您的测试将使用您的自定义配置来保护。真正的问题是什么?
如果您不想对某些测试进行身份验证,只需使用 Spring Security 的测试基础设施并添加@WithMockUser.
| 归档时间: |
|
| 查看次数: |
1304 次 |
| 最近记录: |