2017-03-16 51 views
0

这是控制器:单元测试HttpSessionRequiredException:预期会话属性

@Controller("person") 
@SessionAttributes("name") 
public class SomeController { 
    @RequestMapping(value = "/add", method = RequestMethod.POST) 
    public String save(@Valid Person person, Model model, @ModelAttribute("name") String name, BindingResult result) {} 
} 

这是测试:

@RunWith(SpringRunner.class) 
@SpringBootTest 
@AutoConfigureMockMvc 
public class PersonTest { 

    @Autowired 
    private MockMvc mockMvc; 

    @Test 
    @WithMockUser(username = "ram", authorities={"TEACHER"}) 
    public void checkPersonInfoWhenNameMissingNameThenFailure() throws Exception { 
     MockHttpServletRequestBuilder createPerson = post("/person/add") 
       .param("aa", "bb"); 

     mockMvc.perform(createPerson) 
       .andExpect(model().hasErrors()); 
    } 
} 

由于控制器需要一个会话属性 “名”,因此,上述试验抛出:

org.springframework.web.HttpSessionRequiredException: Expected session attribute 'name' 

如何测试需要会话属性的控制器方法? 谢谢。

回答