我需要一些测试 POST REST 功能的帮助,
我得到了这个 REST 函数头:
@RequestMapping(value = "/import", method = RequestMethod.POST)
public @ResponseBody
HistoricalDataImportResponse importHistoricalDataFile(String fileFormat, @RequestParam("file") MultipartFile stream) {
我尝试使用 JUnit 进行以下测试:
@Test
public void testHistoricalDataImport() throws Exception {
ObjectMapper mapper = new ObjectMapper();
FileItem fileItem = new DiskFileItem(null, null, false, null, 0, null);
MultipartFile eventRequest = new CommonsMultipartFile(null);
String body = mapper.writeValueAsString(eventRequest);
//when
MvcResult result = this.mockMvc.perform(post("/historicaldata/import").contentType(MediaType.MULTIPART_FORM_DATA).content(body))
.andExpect(status().isOk())
.andReturn();
}
运行测试时fileItem
为空,我需要如何将一些文件传递给我的REST函数?
最佳答案
通过查看代码,您似乎想要从文件系统读取文件,然后使用 objectMapper 将其转换为 JSON。这是编写单元测试的错误方法,您不能从单元测试访问文件系统,您的测试应该单独运行。使用下面的代码
@Test
public void testHistoricalDataImport() throws Exception {
MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.fileUpload("/historicaldata/import")
.file("filename","some data as file text".getBytes());
MvcResult result = mockMvc.perform(requestBuilder).andExpect(status().isOk()).andReturn();
}
关于java - 如何使用 junit 测试带有 MultiPart 参数的 REST API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42136634/