mockmvc捕获普通异常与三方框架异常
由于mockmvc是不涉及启动项目的,所以我猜测极大可能是因为自定义异常没有被加载,这样我们就需要手动的去为异常实体指定异常类型
1.@ResponseStatus指定自定义异常类型
@ResponseStatus(HttpStatus.BAD_REQUEST)
public class BadRequestAlertException extends AbstractThrowableProblem {}
例如我这个指定了HttpStatus.BAD_REQUEST,那么我mockmvc判断的时候andExpect(status().isBadRequest())
就可以识别到了
2.三方框架异常
三方框架异常的话,就不是我们自己可以去修改类了,这时候就要手动提供异常处理程序,即实例化mockmvc时指定对应的ExceptionHandler:
//比如我要捕获SpringSecurity产生的异常,就找到了SpringSecurityExceptionHandling
mockMvc = MockMvcBuilders.standaloneSetup(resource)
.setControllerAdvice(SpringSecurityExceptionHandling.class)
.build();