如何从此测试中获取返回值?我的控制器返回@Responsebody Meal
@Test
// @Transactional
public void testPost() {
Profile profile = ProfileUtil.getProfile();
profileService.save(profile);
String requestUri = "/user/" + profile.getId() + "/meals";
request.setMethod("POST");
request.setRequestURI(requestUri);
Object handler;
try {
handler = handlerMapping.getHandler(request).getHandler();
handlerAdapter.handle(request, response, handler);
Assert.assertEquals(200, response.getStatus());
//I would like to have the controller return value here! :)
} catch (Exception e) {
}
}
答案 0 :(得分:2)
您有两种选择:
直接调用控制器,而不是通过处理程序映射/ servlet层。通过这种方式,您只需获取Meal
对象,就可以在其上运行断言
解析来自response
对象的响应。在你的情况下,{MV}采用了Meal
对象并编组,可能是XML或JSON。原始对象现在丢失,您只能检索XML / JSON字符串,解析它并在其上运行断言(例如,使用XPath)。
这两种方法都有其优点。如果要测试控制器本身,请首选第一个。后者更复杂但可以让你测试编组。