背景
写单元测试的时候,用Mock模拟请求oauth2的token时,发现一直都为空;同时,带token头的校验也不被Security拦截了,这引起了我的疑惑
核心
根据不被拦截,不难发现,其实Oauth2/Security的拦截器没有被加载进单元测试中,使用MockMvcBuilders.addFilters方法即可
代码
添加上springSecurityFilterChain过滤链即可
@SpringBootTest(classes = ApiApplication.class)
class ApiTest {
private MockMvc mockMvc
@Autowired
protected WebApplicationContext wac
@Autowired
private Filter springSecurityFilterChain
@Before
void setup() {
mockMvc = MockMvcBuilders.webAppContextSetup(wac)
.addFilters(springSecurityFilterChain).build()
}
}