测试控制器获得返回值

时间:2012-10-01 08:28:18

标签: spring spring-mvc spring-3

如何从此测试中获取返回值?我的控制器返回@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) {

    }

}

1 个答案:

答案 0 :(得分:2)

您有两种选择:

  • 直接调用控制器,而不是通过处理程序映射/ servlet层。通过这种方式,您只需获取Meal对象,就可以在其上运行断言

  • 解析来自response对象的响应。在你的情况下,{MV}采用了Meal对象并编组,可能是XML或JSON。原始对象现在丢失,您只能检索XML / JSON字符串,解析它并在其上运行断言(例如,使用XPath)。

这两种方法都有其优点。如果要测试控制器本身,请首选第一个。后者更复杂但可以让你测试编组。

相关问题