我正在尝试测试是否在我的rest控制器中引发了异常。这是我的休息控制器:
@DeleteMapping
public ResponseEntity<Void> cancel(@RequestParam long id) {
if(id < 1) {
throw new MyException();
}
try {
doSomething();
}
catch (SomeException e) {
throw new MyException();
}
}
这是我的测试:
private MockMvc mockMvc;
@BeforeMethod
public void beforeMethod() {
initMocks(this);
mockMvc = standaloneSetup(new StudyDispatcherController(studyDispatcherService)).build();
}
@Test (expectedExceptions = MyException.class)
public void cancelWithInvalidParam() throws Exception {
mockMvc.perform(delete(BASE_URL).param("id", "-1").contentType("application/json").accept(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest());
@Test (expectedExceptions = MyException.class)
public void cancelWithException() throws Exception {
doThrow(SomeException.class).when(myService).doSomething();
mockMvc.perform(delete(BASE_URL).param("id", "123").contentType("application/json").accept(MediaType.APPLICATION_JSON)).andExpect(status().is5xxServerError());
}
但是,它抛出org.springframework.web.util.NestedServletException:请求处理失败;
我该如何以正确的方式处理?
您可以尝试使用下面的代码来代替cancelWithInvalidParam()方法吗?>>
@Test (expectedExceptions = Exception.class)
public void cancelWithInvalidParam() throws Exception {
mockMvc.perform(delete(BASE_URL).param("id", "-1").contentType("application/json").accept(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest());