使用MockMvc从嵌套异常中获取底层错误消息的步骤如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
@WebMvcTest(YourController.class)
public class YourControllerTest {
@Autowired
private MockMvc mockMvc;
// 测试方法
}
@Test
public void testNestedException() throws Exception {
MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/your-endpoint"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andReturn();
// 从响应中获取异常信息
Exception resolvedException = result.getResolvedException();
if (resolvedException != null) {
Throwable rootCause = getRootCause(resolvedException);
String errorMessage = rootCause.getMessage();
// 处理错误消息
}
}
private Throwable getRootCause(Throwable throwable) {
Throwable rootCause = throwable;
while (rootCause.getCause() != null) {
rootCause = rootCause.getCause();
}
return rootCause;
}
在上述代码中,我们使用MockMvc执行GET请求,并通过andExpect
方法验证响应状态码。然后,通过result.getResolvedException()
方法获取解析后的异常对象。如果存在异常,我们可以使用getRootCause
方法获取最底层的异常,并从中获取错误消息。
请注意,以上代码仅为示例,你需要根据你的实际情况进行适当的修改和调整。
关于MockMvc和Spring MVC的更多信息,你可以参考腾讯云的相关产品和文档:
希望以上信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云