1. Обзор
В этом кратком руководстве мы рассмотрим, как протестировать составной запрос на публикацию весной с помощью MockMvc .
2. Зависимости Maven
Прежде чем мы начнем, давайте добавим последние JUnit и Весенний тест зависимости в ваш pom.xml :
junit junit 4.13 test org.springframework spring-test 5.1.16.RELEASE test
3. Тестирование составного запроса на публикацию
Давайте создадим простую конечную точку в нашем RestController:
@PostMapping(path = "/upload") public ResponseEntityuploadFile(@RequestParam("file") MultipartFile file) { return file.isEmpty() ? new ResponseEntity (HttpStatus.NOT_FOUND) : new ResponseEntity (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 и передачи ей объекта file. Наконец, мы проверим код состояния 200, чтобы проверить наш тестовый случай.
4. Заключение
В этой статье мы рассмотрели, как протестировать составной запрос Spring POST с использованием MockMvc с помощью примера.
Как всегда, проект доступен на GitHub .