1

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

    }

}
4

1 回答 1

2

你有两个选择:

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

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

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

于 2012-10-01T17:35:03.160 回答