我的 @ControllerAdvice
带注释的 Controller 如下所示:
@ControllerAdvice
public class GlobalControllerExceptionHandler {
@ResponseStatus(value = HttpStatus.UNAUTHORIZED)
@ExceptionHandler(AuthenticationException.class)
public void authenticationExceptionHandler() {
}
}
当然,我的开发是测试驱动的,我想在 JUnit 测试中使用我的异常处理程序。我的测试用例如下所示:
public class ClientQueriesControllerTest {
private MockMvc mockMvc;
@InjectMocks
private ClientQueriesController controller;
@Mock
private AuthenticationService authenticationService;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
}
@Test
public void findAllAccountRelatedClientsUnauthorized() throws Exception {
when(authenticationService.validateAuthorization(anyString())).thenThrow(AuthenticationException.class);
mockMvc.perform(get("/rest/clients").header("Authorization", UUID.randomUUID().toString()))
.andExpect(status().isUnauthorized());
}
}
可能我需要注册 ControllerAdvice
类。该怎么做?
最佳答案
从 Spring 4.2 开始,您可以将 ControllerAdvice 直接注册到 StandaloneMockMvcBuilder 中:
MockMvcBuilders
.standaloneSetup(myController)
.setControllerAdvice(new MyontrollerAdvice())
.build();
关于java - 使用 MockMVC 在 JUnitTest 中注册 @ControllerAdvice 带注释的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25604215/