我想编写一个测试来评估处理请求时出现 NullPointerException 的 Controller 的响应。
为此,我编写了一个 Controller ,在处理请求时抛出 NullPointer。使用 MockMVC Controller ,我向该 Controller 发送 GET 请求。
在处理空指针时抛出空指针的 Controller :
@Controller
public class Controller{
@GetMapping(value = "/api/data")
@ResponseBody
public ResponseEntity<Resource> getData() {
if (true)
throw new NullPointerException(); // Intended Nullpointer Exception
return ResponseEntity.notFound().build();
}
}
我期望收到 500 错误的测试函数:
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class Test {
@Autowired
protected MockMvc mockMvc;
@Test
public void shouldReturn500StatusWhenControllerThrowsAnException() throws Exception {
MvcResult result = this.mockMvc.perform(get("/api/data"))
.andExpect(status().is5xxServerError())
.andReturn();
}
}
我希望 MockMVC 请求返回错误 500,就像真实 Controller 作为服务器运行时所做的那样。 实际上,MockMVC 只是因 NullPointer 异常而失败,并且不返回任何内容。
最佳答案
在原始问题中添加更多信息后进行编辑: 我遇到了同样的问题,尝试使用这些注释而不是您拥有的三个注释:
@RunWith(SpringRunner.class)
@WebMvcTest
@AutoConfigureWebClient
关于java - 如何实际测试具有空指针异常的 Controller 的服务器响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55710454/