Как получить MvcResult при модульном тестировании POST с помощью MultipartFile - PullRequest
1 голос
/ 10 июля 2020

Когда я тестирую только тривиальные POST-запросы, я могу получить MvcResult и что-то от него получить:

MvcResult result = mockMvc.perform(post("/api/register")
                .contentType(MEDIA_TYPE_JSON_UTF8)
                .content(new Gson().toJson(request)))
                .andExpect(status().isCreated())
                .andReturn();
Long tempId = Long.valueOf(JsonPath.read(result.getResponse().getContentAsString(), "$.id").toString());

Но когда я использую MultipartFile, я могу использовать только MockMvcRequestBuilders и проверять только ожидания .

MockMultipartFile filePart = new MockMultipartFile(
                "file",
                "file.jpg",
                "image/jpeg", file);
mockMvc.perform(MockMvcRequestBuilders.multipart("/api/loadfile")
                .file(filePart)
                .param("json", json))
                .andExpect(status().isOk()); 

Как я могу получить MvcResult с помощью multipart POST после запроса?

1 Ответ

1 голос
/ 13 июля 2020

Вы можете вызвать .andReturn(); сразу после .andExpect(), как вы это делали в тривиальном примере POST.

Вызов mockMvc.perform() возвращает объект ResultActions независимо от любого метода или запроса HTTP.

Следующий пример работает с Spring Boot 2.3.0:

byte[] file = new byte[10];
MockMultipartFile filePart = new MockMultipartFile(
  "file", "file.jpg", "image/jpeg", file);

MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.multipart("/api/loadfile")
  .file(filePart)
  .param("json", "json"))
  .andExpect(status().isOk())
  .andReturn();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...