Я пытаюсь написать интеграционный тест для одного из моих методов, который обрабатывает отправку формы.Проблема в том, что я использую @PathVariable int id
в @RequestMapping
моего контроллера.Когда мой метод проверки достигает части .handle (), я получаю следующее сообщение об ошибке.
nested exception is java.lang.IllegalStateException: Could not find @PathVariable [id] in @RequestMapping
Таким образом, контроллер не может достичь идентификатора.Я использую request.setRequestURI("/url-" + s.getId());
Но, очевидно, это не помогает с настройкой @PathVariable
.Есть ли способ настроить @PathVariable
моего объекта Mock?
Обновление:
Да, я использую MockHttpServletRequest
и annotationMethodHandlerAdapter.handle
в моем тестовом классе.
Контроллер:
@RequestMapping(method = RequestMethod.POST, params = {"edit" })
public String onSubmit(@ModelAttribute("sceneryEditForm") SceneryEditForm s,
@PathVariable int id, Model model) {
// some code that useing id
}
Метод испытаний:
@Test
public void testEditButton() throws Exception {
MyObject s = new MyObject();
request.setMethod("POST");
request.setRequestURI("/edit-" + s.getId());
request.setParameter("edit", "set");
final ModelAndView mav = new AnnotationMethodHandlerAdapter()
.handle(request, response, controller);
assertViewName(mav, "redirect:/view-" + s.getId());
}