MockMvcRequestBuilders.multipart() Как отправить PUT запрос?

Код ниже работает хорошо, но посылает POST запросы, как мне отпроавитьPUT?

@Test
void updateDish() throws Exception {
    MockMultipartFile emptyFile
            = new MockMultipartFile(
            "image",
            "image.jpg",
            MediaType.IMAGE_JPEG_VALUE,
            new byte[0]
    );
    DishCreationDto dishCreationDto = getDishCreationDto();
    mockMvc.perform(multipart("/admin/dishes")
                    .file(emptyFile)
                    .flashAttr("dish", dishCreationDto)
                    .with(csrf()))
            .andExpect(redirectedUrl("/admin/dishes"));
    Mockito.verify(dishService, Mockito.times(1)).saveDish(dishCreationDto);
}

Ответы (1 шт):

Автор решения: Nowhere Man

Можно создать кастомный билдер, который установит метод PUT в HTTP-запросе:

MockMultipartHttpServletRequestBuilder putMultipart = (MockMultipartHttpServletRequestBuilder)
        MockMvcRequestBuilders.multipart("/admin/dishes")
        .with(rq -> { rq.setMethod("PUT"); return rq; });

mockMvc.perform(putMultipart
        .file(emptyFile)
        .flashAttr("dish", dishCreationDto)
        .with(csrf()))
    .andExpect(redirectedUrl("/admin/dishes"));
→ Ссылка