我有一个简单的 junit 测试来验证 servlet 端点的响应。
问题:我想获取作为 java 对象 Person
的响应,而不是作为 string/json/xml 表示形式。
这可能吗?
@RestController
public class PersonController {
@GetMapping("/person")
public PersonRsp getPerson(int id) {
//...
return rsp;
}
}
@RunWith(SpringRunner.class)
@WebMvcTest(value = PersonController.class)
public class PersonControllerTest {
@Autowired
private MockMvc mvc;
@Test
public void test() {
MvcResult rt = mvc.perform(get("/person")
.param("id", "123")
.andExpect(status().isOk())
.andReturn();
//TODO how to cast the result to (Person) p?
}
}
最佳答案
你可以这样反序列化它:
String json = rt.getResponse().getContentAsString();
Person person = new ObjectMapper().readValue(json, Person.class);
你也可以@Autowire ObjectMapper
关于java - 如何在 MockMvc junit 测试中获取 @RestController 的 ResponseBody 作为对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47204496/