使用Spring MVC Test对多部分POST请求进行单元测试

使用Spring MVC Test对多部分POST请求进行单元测试,第1张

使用Spring MVC Test对多部分POST请求进行单元测试

由于

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

@Configuration
class

@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,但内容类型不同。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4907313.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-12
下一篇2022-11-12

发表评论

登录后才能评论

评论列表(0条)

    保存