2013-10-04 12 views
2

Я хочу, чтобы проверить этот метод MockMvcКак передать BindingResult в качестве параметра запроса?

@RequestMapping("/saveCandidate") 
     public String saveCandidate(
       Model model, 
       @ModelAttribute("candidateFromRequest") @Validated() Candidate candidateFromRequest, 
       BindingResult result, 
       @ModelAttribute("skillsIdList") Set<Skill> skills, 
       @ModelAttribute("vacanciesForCandidate") Set<Vacancy> vacanciesForCandidate, 
       @ModelAttribute("eventsForCandidate") Set<Event> eventsForCandidate, 
       RedirectAttributes redirectAttributes){ 
... 


} 

Как я могу передать макет из BindingResult результата от метода испытаний saveCandidate метода?

мой метод испытания:

 @Test 
      public void saveCandidateWithErrors() throws Exception{ 
       BindingResult result= mock(BindingResult.class); 

       when(result.hasErrors()).thenReturn(true); 
       when(candidateService.findByName(anyString())).thenReturn(new ArrayList<Candidate>()); 

       MockHttpServletRequestBuilder request = MockMvcRequestBuilders.get("/saveCandidate"); 
     if(result.hasErrors()) 
        //how test code that writing here? 
     } 
     else{ 
      //I always hit it here 
     } 
} 

Я хочу, чтобы установить в reqest результат моего макете

ответ

0

Вы не можете (вы можете, но это не стоит свеч). BindingResult - это объект, создаваемый Spring при создании объекта команды и его передаче при вызове метода обработчика saveCandidate.

Вы не должны тестировать классы и объекты, которые предоставляет Spring, вы должны проверить, как они решаются при вводе правильных или неправильных параметров запроса.


Чтобы объяснить, почему это не стоит:

Spring использует стек HandlerMethodArgumentResolver, RequestMappingHandlerMapping и HandlerMethod случаев, в частности, для обработки запроса, который поступает на DispatcherServlet. Издевательствовать BindingResult, скорее всего, означало бы фальсификацию или подкласс всех этих.

+0

Пожалуйста, объясните мне, как я могу передать @ModelAttribute ("кандидатFromRequest") @Validated() Кандидат кандидатаFromRequest? –

+0

Я хочу передать его с недопустимыми данными –

+0

@ user2740224 Вы тоже не можете этого сделать. Spring генерирует этот объект из ваших параметров запроса. Отправить параметры плохого запроса. –

Смежные вопросы