Mock MVC - вызов конечной точки PUT, которая принимает составной файл - PullRequest
0 голосов
/ 12 июля 2020

У меня есть простая конечная точка PUT в приложении Spring Boot:

@PutMapping()
public ResponseEntity<String> upload(@RequestParam("cats") MultipartFile file) throws IOException {

Я пытаюсь создать тест для контроллера, используя MockMVC:

import org.springframework.test.web.servlet.MockMvc;

@RunWith(SpringRunner.class)
@WebMvcTest(CatController.class)
public class CatControllerTest {

@Autowired
private MockMvc mockMvc;

...

Для POST конечные точки Я использую что-то вроде этого:

 MockMultipartFile multipartFile = new MockMultipartFile("file", new FileInputStream("myCats.csv"));

 mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).alwaysDo(print()).build();

 MvcResult result = mockMvc.perform(MockMvcRequestBuilders.multipart("/uploadCats").file(multipartFile))
    .andExpect(status().isOk())
    .andReturn();

Но при попытке перевести вышеуказанный вызов в конечную точку PUT я обнаружил, что могу создать

MockMvcRequestBuilders.put("/catUpload")

Но тогда я могу ' t привязать к нему multipart

Или я могу сделать:

MockMvcRequestBuilders.multipart(...)

Но тогда я не могу привязать к нему put.

Я видел пост об этой проблеме, но всем им было несколько лет. Есть ли способ сделать это?

1 Ответ

0 голосов
/ 13 июля 2020

Используя этот отличный пример Мне удалось решить проблемы.

Я прилагаю здесь код с незначительными обновлениями к сообщению от 2016 года:

...