java / intermediate
Snippet
Validierung von Controller-Anfrage-Payloads mit MockMvc und @WebMvcTest
`@WebMvcTest` beschränkt den Spring-ApplicationContext auf die Web-Schicht und lädt ausschließlich Controller, Konverter und Validierungslogik statt des gesamten Kontexts. `MockMvc` bietet eine funktionale DSL zur Simulation von HTTP-Anfragen ohne Start eines echten eingebetteten Webservers, was eine schnelle Prüfung von Request-Body-Parsing, Routing und Bean-Validation-Regeln ermöglicht.
snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@WebMvcTest(UserController.class)class UserControllerTest {@Autowiredprivate MockMvc mockMvc;@Testvoid shouldRejectInvalidEmail() throws Exception {mockMvc.perform(post("/users").contentType(MediaType.APPLICATION_JSON).content("{\"name\": \"Anna\", \"email\": \"invalid-email\"}")).andExpect(status().isBadRequest());}}
spring
Erklärung
1
@WebMvcTest(UserController.class)
Konfiguriert einen zugeschnittenen Spring-Testkontext, der ausschließlich MVC-Komponenten für `UserController` lädt.
2
mockMvc.perform(post("/users")
Initiiert einen simulierten HTTP-POST-Request an den Endpunkt `/users`.
3
.andExpect(status().isBadRequest());
Stellt sicher, dass der Controller aufgrund von Validierungsfehlern im E-Mail-Feld mit HTTP 400 Bad Request antwortet.