Я пытаюсь выполнить тест, который проверяет, все ли параметры события успешно обновлены, но всякий раз, когда я запускаю тест, я получаю сообщение «Ожидаемый статус: <302>, но был: <405>».
Метод контроллера для обновления событий
@RequestMapping(value="/update/{id}", method= RequestMethod.POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public String putEvent(@PathVariable("id") Long id, Event event) {
Event newEvent = eventService.findOne(id);
newEvent.setName(event.getName());
newEvent.setDate(event.getDate());
newEvent.setTime(event.getTime());
newEvent.setVenue(event.getVenue());
newEvent.setSummary(event.getSummary());
newEvent.setDescription(event.getDescription());
eventService.save(newEvent);
return "redirect:/events";
}
Тест для обновления событий
@Test
public void everyFieldChangedUpdateEvent() throws Exception {
ArgumentCaptor<Event> arg = ArgumentCaptor.forClass(Event.class);
mvc.perform(MockMvcRequestBuilders.post("/events/updateEvent/5").with(user("Rob").roles(Security.ADMIN_ROLE))
.contentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE)
.param("name", "new name")
.param("date", "2020-10-10")
.param("time", "11:30")
.param("venue.name", "2")
.param("summary", "new summary")
.param("description", "new description")
.accept(MediaType.TEXT_HTML).with(csrf()))
.andExpect(status().isFound())
.andExpect(content().string(""))
.andExpect(view().name("redirect:/events"))
.andExpect(model().hasNoErrors())
.andExpect(handler().methodName("putEvent"));
verify(eventService.save(arg.capture()));
assertThat("new name",equalTo(arg.getValue().getName()));
assertThat("2020-10-10",equalTo(arg.getValue().getDate().toString()));
assertThat("11:30",equalTo(arg.getValue().getTime().toString()));
assertThat("2",equalTo(arg.getValue().getVenue().getName()));
assertThat("new summary",equalTo(arg.getValue().getSummary()));
assertThat("new description",equalTo(arg.getValue().getDescription()));
}
Сбой на ".andExpect (status (). IsFound ())", но у меня нет Понятия не имею, почему