如何将模拟 mvc GET 调用映射到 java POJO?

How to map mock mvc GET call into java POJO?

我有一个休息控制器方法,它 returns 一个对象 CompositeObject 其中包含几个其他对象和结构(地图和列表)。我想编写一个测试来测试其余部分是否调用 returns 该对象以及字段(即使这些字段的值为空),但我不知道如何映射模拟的响应下面的 mvc 调用:

String response = this.mockMvc.perform(get("/getclassdata?classCode=cs").accept("application/json"))
                .andExpect(status().isOk())
                .andReturn().getResponse().getContentAsString();

此测试工作正常,但我想检查返回的 JSON 是否是我感兴趣的对象 (CompositeObject) 并确保它包含所有必填字段。我该如何测试?测试框架中是否有类似instanceof的东西?

谢谢。

您可以使用 com.fasterxml.jackson.databind.ObjectMapper:

阅读对 POJO 的 Json 响应
ObjectMapper mapper = new ObjectMapper();

MvcResult mvcResult = mockMvc.perform(get("/example-endpoint")).andReturn();

ExampleResponse parsedResponse = mapper.readValue(mvcResult.getResponse().getContentAsByteArray(), ExampleResponse.class);