spring 3.2引入了spring mvc测试框架并使其成为它的正式部分,如文档中所述,我想用它来测试我的控制器,这是一种处理发布请求的方法。
68 @RequestMapping(value = "/new", method = RequestMethod.POST)
69 public String addCarPost(@Valid @ModelAttribute NewCar car, BindingResult result){
70 if(result.hasErrors())
71 {
72 return "newcar" ;
73 }
74 carService.addCar(car) ;
75 return "redirect:/garage" ;
76 }
这是我的第一次尝试:
30 @RunWith(SpringJUnit4ClassRunner.class)
31 @ContextConfiguration("test-config.xml")
32 @WebAppConfiguration
33 public class GarageIntegrationTest {
// ....
72 @Test public void testAddCarPost() throws Exception{
// i didn't add any parameters to request.
73 this.mockMvc.perform(post("/garage/new"))
74 .andExpect(view().name("newcar")) ;
75 }
// ....
}
我想测试@ Valid,@ RequestMapping和@ModelAttribute,我没有添加任何参数来请求,因此实例化了一个新的NewCar()
类,该类的所有属性都被初始化为null或者0,所以验证器必须检测到新实例有错误并返回视图“newcar”,当我运行此测试时,我在服务carService
中有一个NullPointerException,它的行为就像result.hasErrors()
已经返回{ {1}},我错过了一些东西。