是否可以使用 MockMCV 来比较实际的 ResponseEntity 和从控制器返回的 ResponseEntity?
@Test
public void testStatusGetAllCars() throws Exception {
ResponseEntity<?> expectedResponse = carController.getAllCars();
mockMVC.perform(MockMvcRequestBuilders.get("/api/cars"))
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().contentType("application/hal+json;charset=UTF-8"))
.andExpect( /// compare goes here // );
}
控制器返回 json 作为 ResponseEntity 的主体。 您可以使用 jackson 并使用 NodeObject 和 Objectmapper 创建预期的 JSON 对象
见 https://attacomsian.com/blog/jackson-create-json-object
ObjectMapper mapper = new ObjectMapper();
NodeObject expected = mapper.createObjectNode();
//then put your fields
现在您可以使用
.andExpect(MockMvcResultMatchers.content().json(expected.toString());
它对我有用