
由于
MockMvcRequestBuilders#fileUpload已弃用,因此你将使用
MockMvcRequestBuilders#multipart(String, Object...)返回的
MockMultipartHttpServletRequestBuilder。然后链接一堆
file(MockMultipartFile)calls。
@Controller
@Controllerpublic class NewController { @RequestMapping(value = "/upload", method = RequestMethod.POST) @ResponseBody public String saveAuto( @RequestPart(value = "json") JsonPojo pojo, @RequestParam(value = "some-random") String random, @RequestParam(value = "data", required = false) List<MultipartFile> files) { System.out.println(random); System.out.println(pojo.getJson()); for (MultipartFile file : files) { System.out.println(file.getOriginalFilename()); } return "success"; } static class JsonPojo { private String json; public String getJson() { return json; } public void setJson(String json) { this.json = json; } }}and a unit test
@WebAppConfiguration@ContextConfiguration(classes = WebConfig.class)@RunWith(SpringJUnit4ClassRunner.class)public class Example { @Autowired private WebApplicationContext webApplicationContext; @Test public void test() throws Exception { MockMultipartFile firstFile = new MockMultipartFile("data", "filename.txt", "text/plain", "some xml".getBytes()); MockMultipartFile secondFile = new MockMultipartFile("data", "other-file-name.data", "text/plain", "some other type".getBytes()); MockMultipartFile jsonFile = new MockMultipartFile("json", "", "application/json", "{"json": "somevalue"}".getBytes()); MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); mockMvc.perform(MockMvcRequestBuilders.multipart("/upload") .file(firstFile) .file(secondFile) .file(jsonFile) .param("some-random", "4")) .andExpect(status().is(200)) .andExpect(content().string("success")); }}And the
@Configurationclass
@Configuration@ComponentScan({ "test.controllers" })@EnableWebMvcpublic class WebConfig extends WebMvcConfigurationSupport { @Bean public MultipartResolver multipartResolver() { CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); return multipartResolver; }}The test should pass and give you output of
4 // from paramsomevalue // from json filefilename.txt // from first fileother-file-name.data // from second file
需要注意的是,你与其他多部分文件一样发送JSON,但内容类型不同。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)