gpt4 book ai didi

java - 为本地 @ExceptionHandler 编写 JUnit 测试

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:46:57 26 4
gpt4 key购买 nike

我有以下 Controller :

class Controller {

@ResponseStatus(HttpStatus.OK)
@RequestMapping(value = "/verifyCert", method = RequestMethod.GET)
public void verifyCertificate() throws CertificateExpiredException, CertificateNotYetValidException {
certificate.checkValidity();
}

@ResponseStatus(HttpStatus.FORBIDDEN)
@ExceptionHandler({CertificateExpiredException.class, CertificateNotYetValidException.class})
public void handleCertificateValidityException(Exception e) {}
}

我的目标是在证书无效时 Controller 重定向到异常处理程序。

最佳答案

使用 standaloneSetup 时,您所做的只是为特定 Controller 执行设置。

如果您不想配置整个应用程序上下文(您可以使用 webAppContextSetup 而不是 standaloneSetup),您可以通过更改手动设置异常处理程序您的代码:

 @Before
public void setup() throws IOException {
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.standaloneSetup(controller).setHandlerExceptionResolvers(new ExceptionHandlerExceptionResolver()).build();
}

@Test
public void test() throws Exception {
mockMvc.perform(get("/verifyCert.controller").contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON)).andExpect(status().isForbidden());
}

这是有效的,因为 ExceptionHandlerExceptionResolver是Spring MVC根据@ExceptionHandler注解

处理异常的类

查看 one我较早的相关答案涵盖了一个更加困难的案例(在包含 @ExceptionHandler 的类上使用 @ControllerAdvice)。

关于java - 为本地 @ExceptionHandler 编写 JUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25687215/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com