java - 在 spring test mvc 中设置请求部分

标签 java spring spring-mvc spring-test spring-mvc-test

我正在尝试测试(通过 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/

相关文章:

java - 为什么 GSON 无法从 JSON 文件中检索所有值?

java - 将复选框添加到 ListView 中

java - Androidplot 方向传感器中的条形图旋转

java - 如何将applicationContext中加载的spring bean转换为接口(interface)?

java - Spring - 在 xml 中获取系统环境变量会导致空指针异常

java - 如何为运行 Tomcat 的 Web 应用程序配置带有 logback 的 slf4j

java - Jackson 序列化器默认包装列表?

java - 用 spring mvc 替换 Struts2

java - 如何将参数传递给 errors.rejectValue() 这是 Spring MVC 3 中 ResourceBundle 的另一个属性?

java - 从 excel : suggestions for design or approach for better performance 批量加载 Hibernate