【发布时间】:2016-08-28 06:45:39
【问题描述】:
我正在尝试(通过 Spring 测试 (mvc))测试一个使用 servletRequest.getParts() 的控制器
到目前为止,我所读到的只是MockMvcRequestBuilders.fileUpload().file() 是解决方案。但是我不能让它工作。我写了以下失败的测试
MockMultipartHttpServletRequestBuilder builder = MockMvcRequestBuilders.fileUpload("/foo")
.file(new MockMultipartFile("file", new byte[] { 1, 2, 3, 4 }));
MockHttpServletRequest rq = builder.buildRequest(null);
Assert.assertEquals(1, rq.getParts().size()); // result 0
我浏览了spring代码,当getParts()从另一个列表(Map<String, Part> parts)获取元素时,对file(...)的调用在List<MockMultipartFile>中添加了一个元素
一定有别的办法……
编辑 1
我用来测试控制器的代码是:
ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.fileUpload(new URI("/url")).file("param", "expected".getBytes()))
【问题讨论】:
-
你如何测试这个?通过调用控制器方法或者您实际上是在使用 MockMvc。如果是后者,你就用错了,如果是前者,你就很难了。
-
我正在使用 MockMvc。我添加了我正在使用的代码
-
MultipartFile不是Part,所以这不起作用。您只能添加 MockMvc 目前无法添加的部件和 afaik。您唯一的更改可能是模拟Part并通过创建自定义 RequestBuilder 自己添加它。
标签: java spring spring-mvc spring-test spring-mvc-test