Вы определяете три параметра запроса в своей конечной точке @Valid @RequestParam ArrayList<Long> idDeleted, @Valid @RequestParam String content, @Valid @RequestParam String description
, что означает, что они являются параметрами запроса после URL-адреса, например http://localhost:8080/?idDeleted=1&idDeleted=2&content=Hello&description=Duke
.
HTTP 404 указывает, что Spring не может найти обработчик для вашего запроса , что означает, что клиент (в вашем случае MockMvc
) имеет неверный URL.
В вашей текущей настройке запроса MockMvc
вы используете .requestAttr()
для параметра запроса idDeleted
.
Все они должны быть .param()
:
mockMvc
.perform(put("/infoUtile/update/{id}",informationUtile.getId())
.param("idDeleted", idDeletedOne , idDeletedTwo)
.param("content",informationUtile.getContent())
.param("description",informationUtile.getDescription())
)
PS: Я думаю, что аннотации @Valid
избыточны / не нужны здесь, поскольку вы не проверяете, например, полезную нагрузку, которая имеет аннотации Bean Validation для проверки содержимого .
ОБНОВЛЕНИЕ: .param()
перегружено .parm(String name, String... values)
, поэтому вы можете передать свой список idDeleted
либо .param("idDeleted", idDeletedOne, idDeletedTwo)
, либо String[]
со всеми своими Long
значения представлены как String