在spring test mvc

时间:2016-05-03 09:30:28

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

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

1 个答案:

答案 0 :(得分:2)

目前不支持在 Spring MVC测试框架中使用javax.servlet.http.Part进行测试。

因此,我在Spring Framework 5.0中引入了两张解决这个缺点的门票:

在此期间,您应该能够自己模仿Part并通过自定义MockHttpServletRequest在准备好的RequestPostProcessor中注册。

此致

Sam( Spring TestContext Framework的作者