【问题标题】:Testing controller get return value测试控制器获取返回值
【发布时间】:2012-10-01 08:28:17
【问题描述】:

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

    }

}

【问题讨论】:

    标签: spring spring-mvc spring-3


    【解决方案1】:

    你有两个选择:

    • 直接调用控制器,而不是通过处理程序映射/servlet 层。这样您就可以简单地获取Meal 对象,并且可以在其上运行断言

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-27
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多