Java 如何在SpringREST控制器中测试异常?
我试图测试我的rest控制器中是否抛出了异常。这是我的休息控制器:Java 如何在SpringREST控制器中测试异常?,java,spring,rest,mockito,mockmvc,Java,Spring,Rest,Mockito,Mockmvc,我试图测试我的rest控制器中是否抛出了异常。这是我的休息控制器: @DeleteMapping public ResponseEntity<Void> cancel(@RequestParam long id) { if(id < 1) { throw new MyException(); } try { doSomething(); } catch (SomeException e) { thro
@DeleteMapping
public ResponseEntity<Void> cancel(@RequestParam long id) {
if(id < 1) {
throw new MyException();
}
try {
doSomething();
}
catch (SomeException e) {
throw new MyException();
}
}
然而,它抛出
org.springframework.web.util.NestedServletException:请求处理失败
如何以正确的方式处理此问题?能否尝试以下代码而不是cancelWithInvalidParam()方法
所有异常都在异常中得到处理。class@JonathanHagen:如果答案对你有用,你可以接受。
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());
}
@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());