我正在尝试(通过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
我浏览了春季代码,当file(...)
从其他列表List<MockMultipartFile>
获取其元素时,对getParts()
的调用会在(Map<String, Part> parts)
中添加一个元素
必须有另一种方法来做到这一点......
修改1
我用来测试控制器的代码是:
ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.fileUpload(new URI("/url")).file("param", "expected".getBytes()))
答案 0 :(得分:2)
目前不支持在 Spring MVC测试框架中使用javax.servlet.http.Part
进行测试。
因此,我在Spring Framework 5.0中引入了两张解决这个缺点的门票:
在此期间,您应该能够自己模仿Part
并通过自定义MockHttpServletRequest
在准备好的RequestPostProcessor
中注册。
此致
Sam( Spring TestContext Framework的作者)