我正在尝试测试(通过 Spring 测试 (mvc))使用 servletRequest.getParts()
的 Controller
到目前为止,我只读到 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 代码,并调用了 file(...)
在 List<MockMultipartFile>
中添加一个元素什么时候getParts()
从另一个列表中获取它的元素 (Map<String, Part> parts)
必须有另一种方法...
编辑 1
我用来测试 Controller 的代码是:
ResultActions result = mockMvc.perform(
MockMvcRequestBuilders.fileUpload(new URI("/url")).file("param", "expected".getBytes()))
最佳答案
目前不支持使用 javax.servlet.http.Part
进行测试在 Spring MVC 测试框架中。
因此,我引入了两张票来解决 Spring Framework 5.0 中的这个缺点:
在此期间,您应该能够模拟 Part
自己并在准备好的MockHttpServletRequest
中注册通过自定义 RequestPostProcessor
.
问候,
Sam(Spring TestContext Framework 的作者)
关于java - 在 spring test mvc 中设置请求部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37000457/