Spring 3 - 测试控制器@ModelAttribute方法

时间:2011-02-03 10:57:26

标签: unit-testing spring-mvc

我正在尝试使用此方法测试控制器:

@RequestMapping(value="/export-csv")    
public ModelAndView exportCSV(@ModelAttribute("gsscModel") GsscModel gsscModel) {

我想知道如何创建单元测试来测试它。目前我正在使用:

    MockHttpServletRequest request = new MockHttpServletRequest();
    request.setRequestURI("/support/export-csv");
    //request.setMethod("GET");
    new AnnotationMethodHandlerAdapter().handle(request, 
            new MockHttpServletResponse(), this.controller);

但是我总是遇到以下错误:

  

org.springframework.web.HttpSessionRequiredException:需要会话属性'gsscModel' - 在会话中找不到

我一直在尝试在文档中找到有关此内容的信息,但没有找到任何内容。

由于

1 个答案:

答案 0 :(得分:1)

要重新审核我的评论,我建议您不要正确地对代码进行单元测试。 Spring 3注释方法的一个好处是它使单元测试变得相当容易,因为通常不需要弄乱模拟请求和响应对象。

在您的情况下,您的单元测试可以直接调用exportCSV方法,并适当地处理返回的ModelAndView。实际上没有必要使用像AnnotationMethodHandlerAdapter这样的基础结构类来为您调用该方法,这只会让事情变得复杂。