栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/371404.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号