Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在SpringREST控制器中测试异常?_Java_Spring_Rest_Mockito_Mockmvc - Fatal编程技术网

Java 如何在SpringREST控制器中测试异常?

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

我试图测试我的rest控制器中是否抛出了异常。这是我的休息控制器:

@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());