1. Overview
1.概述
In this quick tutorial, we’re going to see how to test a multipart POST request in Spring using MockMvc.
在这个快速教程中,我们将看到如何使用MockMvc在Spring中测试一个多部分POST请求。
2. Maven Dependencies
2.Maven的依赖性
Before we begin, let’s add the latest JUnit and Spring test dependencies in our pom.xml:
在开始之前,让我们在我们的pom.xml中添加最新的JUnit和Spring test依赖项。
<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. Testing a Multipart POST Request
3.测试一个多部分POST请求
Let’s create a simple endpoint in our REST controller:
让我们在我们的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);
}
Here, the uploadFile method accepts a multipart POST request. In this method, we’re sending status code 200 if the file exists; otherwise, we’re sending status code 404.
这里,uploadFile方法接受了一个多部分的POST请求。在这个方法中,如果文件存在,我们将发送状态代码200;否则,我们将发送状态代码404。
Now, let’s test the above method using MockMvc.
现在,让我们用MockMvc测试上述方法。
First, let’s autowire the WebApplicationContext in our unit test class:
首先,让我们在单元测试类中自动连接WebApplicationContext。
@Autowired
private WebApplicationContext webApplicationContext;
Now, let’s write a method to test the multipart POST request defined above:
现在,让我们写一个方法来测试上面定义的多部分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());
}
Here, we’re defining a hello.txt file using MockMultipartFile constructor, then we’re building the mockMvc object using the webApplicationContext object defined earlier.
在这里,我们使用hello.txt文件MockMultipartFile构造函数,然后我们使用先前定义的webApplicationContext对象构建mockMvc对象。
We’ll use the MockMvc#perform method to call the REST Endpoint and pass it the file object. Finally, we’ll check the status code 200 to verify our test case.
我们将使用MockMvc#perform方法来调用REST端点并将文件对象传给它。最后,我们将检查状态代码200来验证我们的测试案例。
4. Conclusion
4.总结
In this article, we’ve seen how to test a Spring Multipart POST Request using MockMvc with the help of an example.
在这篇文章中,我们已经看到了如何在一个例子的帮助下使用MockMvc测试Spring的多部分POST请求。
As always the project is available over on GitHub.
该项目一如既往地在GitHub上提供超过。