我有一个控制器
@RequestMapping(value = "something/{year}", method = RequestMethod.GET)
@ResponseBody
public MyObject get(@PathVariable("year") int year throws MyException {
return myService.get(year);
}
如果年份不正确,它将抛出一个错误,这个错误将被ErrorInterceptor类捕获
@ExceptionHandler(value = {MyException.class})
protected ResponseEntity<Object> handleMyException(MyException ex, WebRequest request) {
System.out.println(ex.getMessage());
ResponseEntity<Object> res = handleExceptionInternal(ex, ex.getMessage(), new HttpHeaders(), HttpStatus.INTERNAL_SERVER_ERROR, request);
ResponseEntity<Object> response = getMyResponse((ServletWebRequest) request, res);
return response;
}
方法getMyResponse创建了一个带有自定义错误信息(路径、代码错误等)的对象。我的问题是如何在不真正调用控制器的情况下使用Mockito测试它。我已经使用MockMvcBuilders.standaloneSetup(controller).setControllerAdvice(myInterceptor).build()进行了测试,但它总是为null(我不想真正调用)。
我也试过添加Mockito.when和Mockity.verify来伪造呼叫,但我无法获得检索路径和东西...
1条答案
按热度按时间6xfqseft1#
如果你只是想知道拦截器是否返回了正确的响应,你可以创建一个类来扩展拦截器,并为
handleMyException
提供一个公共的 Package 方法,然后示例化这个新类,调用 Package 器并Assert返回的响应。