如何将模拟 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);
我有一个休息控制器方法,它 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
:
ObjectMapper mapper = new ObjectMapper();
MvcResult mvcResult = mockMvc.perform(get("/example-endpoint")).andReturn();
ExampleResponse parsedResponse = mapper.readValue(mvcResult.getResponse().getContentAsByteArray(), ExampleResponse.class);