spring-boot - 使用 MultipartFile 对 POST 进行单元测试时如何获取 MvcResult
问题描述
当我只测试微不足道的 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());
请求后如何通过多部分 POST 获取 MvcResult?
解决方案
您可以像在简单的 POST 示例中那样立即.andReturn();
调用。.andExpect()
调用会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();
推荐阅读
- python - 直接在 NLTK 模式中应用字符串
- ios - 无法为 Facebook Graph API 用户的照片边缘获取单个大尺寸
- python - logits 的形状和标签不匹配
- webview - Window.open() 在 WKWebView 中不起作用
- extjs - 在 extjs 中创建组件时提供显示属性
- javascript - 使用 socket.io 同步新客户端
- java - 访问另一个项目的实体
- ios - 使用带有 Office 365 SharePoint 资源的 Azure AD 登录的设备注册屏幕 - iOS Xamarin
- kivy - KeyError:'kivy.garden.knob'
- java - 如何使用java杀死正在运行的端口号