1. Обзор
В этом кратком руководстве мы увидим, как протестировать составной запрос POST в Spring с помощью MockMvc
.
2. Зависимости Maven
Прежде чем мы начнем, давайте добавим последние тестовые зависимости JUnit и Spring в наш pom.xml
:
<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. Тестирование составного 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
принимает составной запрос POST. В этом методе мы отправляем код состояния 200, если файл существует; в противном случае мы отправляем код состояния 404.
Теперь давайте проверим описанный выше метод с помощью MockMvc
.
Во-первых, давайте автоматически подключим WebApplicationContext
в нашем классе модульного теста:
@Autowired
private WebApplicationContext webApplicationContext;
Теперь давайте напишем метод для проверки составного запроса 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());
}
Здесь мы определяем файл hello.txt с помощью конструктора
`` MockMultipartFile ,
затем
мы создаем объект mockMvc с использованием объекта
webApplicationContext,
определенного ранее.
Мы будем использовать метод MockMvc#perform
для вызова конечной точки REST и передачи ей файлового объекта. Наконец, мы проверим код состояния 200, чтобы проверить наш тестовый пример.
4. Вывод
В этой статье мы увидели, как протестировать многостраничный POST-запрос Spring с использованием MockMvc
на примере.
Как всегда, проект доступен на GitHub .