我正在为Spring Security oauth2配置的项目编写单元测试。为资源所有者密码凭据流配置了Oauth2。
我尝试通过向WebMvcTest注释提供(secure = false)来禁用安全性,该注释可以正常工作,但是我想在启用安全性的情况下编写单元测试。
单元测试如下:
@RunWith(SpringRunner.class)
@WebMvcTest(UserController.class)
class UserControllerTest {
@Autowired
MockMvc mockMvc;
@Test
void test() {
RequestBuilder = MockMvcRequestBuilders.
get("/api/users/").accept(MediaType.APPLICATION_JSON);
MvcResult mvcResult = mockMvc.perform(requestBuilder).andReturn();
assertEquals("Some string", mvcResult.response().contentAsString());
}
}
请注意,资源服务器将/ api / **配置为经过身份验证的端点。
现在,按照我的理解,@ WebMvcTest注释还将自动连接标有@EnableWebSecurity的类,该类依次使用构造函数注入自动连接请求匹配器bean,如下所示:
@Configuration
@EnableWebSecurity
class WebSecurityConfiguration extends WebSecurityConfigurerAdapter{
@Qualifier("resourceServerRequestMatcher")
@Autowired
private RequestMatcher requestMatcher;
public WebSecurityConfiguration(RequestMatcher requestMatcher){
this.requestMatcher = requestMatcher;
}
}
因此,当我运行单元测试时,出现以下异常。
Consider defining a bean of type 'org.springframework.security.web.util.matcher.RequestMatcher' in your configuration.
我确实理解异常在问什么,我对在单元测试类中应该如何完成感到有些困惑。