1. 概述
在本快速教程中,我们将了解如何使用MockMvc在Spring中测试Multipart POST请求。
2. Maven依赖
在开始之前,让我们在pom.xml中添加最新的JUnit和Spring测试依赖项:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.16.RELEASE</version>
<scope>test</scope>
</dependency>
3. 测试Multipart POST请求
让我们在REST控制器中创建一个简单的端点:
@PostMapping(path = "/upload")
public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file) {
return file.isEmpty() ? new ResponseEntity<String>(HttpStatus.NOT_FOUND) : new ResponseEntity<String>(HttpStatus.OK);
}
在这里,uploadFile方法接受Multipart POST请求。在此方法中,如果文件存在,我们将发送状态码200;否则,我们将发送状态码404。
现在,让我们使用MockMvc测试上述方法。
首先,让我们在单元测试类中自动装配WebApplicationContext:
@Autowired
private WebApplicationContext webApplicationContext;
现在,让我们编写一个方法来测试上面定义的Multipart POST请求:
@Test
public void whenFileUploaded_thenVerifyStatus()throws Exception {
MockMultipartFile file = new MockMultipartFile("file", "hello.txt", MediaType.TEXT_PLAIN_VALUE, "Hello, World!".getBytes());
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
mockMvc.perform(multipart("/upload").file(file))
.andExpect(status().isOk());
}
在这里,我们使用MockMultipartFile构造函数定义了一个hello.txt文件,然后我们使用之前定义的webApplicationContext对象构建了mockMvc对象。
我们将使用MockMvc#perform方法调用REST端点并将文件对象传递给它。最后,我们将检查状态码200来验证我们的测试用例。
4. 总结
在本文中,我们了解了如何借助示例使用MockMvc测试Spring Multipart POST请求。
与往常一样,本教程的完整源代码可在GitHub上获得。
Show Disqus Comments
Post Directory
扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章