Тестировать Spring Boot контроллеры можно без запуска сервера.
Аннотация
@AutoConfigureMockMvc автоматически настраивает MockMvc в тестовом контексте и позволяет отправлять HTTP-запросы напрямую через Spring.
@SpringBootTest
@AutoConfigureMockMvc
class UserControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void shouldReturnUser() throws Exception {
mockMvc.perform(get("/users/1"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.id").value(1));
}
}
Что происходит под капотом:
-
@SpringBootTest поднимает полный контекст приложения
-
@AutoConfigureMockMvc настраивает MockMvc
-
Tomcat не запускается
- Запросы проходят через
DispatcherServlet внутри приложения
Результат:
- тесты работают быстрее
- нет сетевых накладных расходов
- проверяется реальный Spring pipeline
Идеальный вариант для быстрых и надёжных controller-тестов.
Обсуждение 1
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram