2012-10-01 75 views
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) { 

    } 

} 

回答

2

你有两个选择:

  • 呼叫控制器,而不是直接通过处理程序映射/ servlet的层去。这样你就可以简单地得到Meal对象,并且你可以运行断言

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

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