比较响应实体春季测试模拟MVC



是否可以使用 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());

它对我有用

最新更新