1

我试图测试用这种方法的控制装置的弹簧控制器的方法:测试具有@ModelAttribute作为参数

@RequestMapping(值=“/测试”)
公共的ModelAndView generateRecords(@ModelAttribute(“雇员” )员工雇员){

我想知道如何创建一个单元测试来测试这个。目前我使用:

MockHttpServletRequest request = new MockHttpServletRequest(); 
request.setRequestURI("/test"); 
//request.setMethod("GET"); 
new AnnotationMethodHandlerAdapter().handle(request, 
     new MockHttpServletResponse(), this.controller); 

运行中NULL值的ModelAttribute(员工)该测试结果

有没有办法做集成测试时传递的ModelAttribute对象控制器?

感谢


只是概括地说:

解决这个问题挑HTML元素的名称和在MockHttpRequest对象填写放慢参数值,并且将它传递。

实施例:

MockHttpServletRequest httpServletRequest = MockRequestResponseGenerator.mockRequest(getServletInstance().getServletContext(), "POST", "/test", paramters); 

//These paramters must be part of the ModelAttribute Object. Make sure, you are using custom property binding in case you have different object. 

     httpServletRequest.setParameter("name", "SPRING MVC INTEGRATION TEST 
TEMP"); 
     httpServletRequest.setParameter("id", "1"); 
     httpServletRequest.setParameter("desc", "SPRING MVC INTEGRATION TEST DESC"); 


     getServletInstance().service(httpServletRequest, httpServletResponse); 

回答

1

作为参数继OGNL路径相匹配的模型属性/形式路径可以设置在请求中的值。

+0

谢谢Teja,它工作!干杯:) – Raj

+0

好听...接受答案,如果它有助于解决您的问题,以便其他用户知道... –

+0

如果员工有例如类型公司的成员“公司” ,比方说,名称和说明字段)?你如何表达通往company.name和company.description的路径? – Rolf