Test webkontrollere med MockMvc
Skriv målrettede tester for REST-endepunktene dine med MockMvc, som simulerer HTTP-forespørsler uten å starte en ekte server.
Test webkontrollere med MockMvc er en gratis leksjon i Komplett guide til Spring Boot 4 på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Komplett guide til Spring Boot 4, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Komplett guide til Spring Boot 4 inneholder totalt 4 leksjoner.
Hvorfor teste kontrollere isolert?
Kontrollertester verifiserer ruting, forespørselsmapping, statuskoder og JSON-serialisering uten kostnaden ved en full server. MockMvc gjør dette raskt og presist.
Introduksjon til @WebMvcTest
Annotasjonen @WebMvcTest laster bare web-laget, kontrollerne Deres og støttebean-ene deres, slik at testutvalget forblir lite og raskt.
@WebMvcTest(UserController.class)
class UserControllerTest {
}Injisere MockMvc
Inne i en @WebMvcTest tilbyr Spring en automatisk konfigurert MockMvc-instans som De autokobler for å utføre simulerte forespørsler.
@Autowired
MockMvc mockMvc;Utføre en GET-forespørsel
Bruk det flytende API-et til å utføre en forespørsel og kjede forventninger på svaret.
mockMvc.perform(get("/users/1"))
.andExpect(status().isOk());Mocke tjenestelaget
Kontrollere er avhengige av tjenester, så De erstatter dem med mocker ved hjelp av @MockBean. Dermed isoleres kontrolleren fra den faktiske forretningslogikken.
@MockBean
UserService userService;Stube atferd
Kombiner Mockito-stubbing med forespørselen for å kontrollere hva tjenesten returnerer.
when(userService.find(1L)).thenReturn(new User("Ada"));Kontrollere JSON-innhold
Bruk jsonPath for å verifisere bestemte felt i svarteksten.
mockMvc.perform(get("/users/1"))
.andExpect(jsonPath("$.name").value("Ada"));Teste POST med en body
Send en JSON-nyttelast og kontroller at statusen er «created», slik at De verifiserer at endepunktet godtar og behandler inndata riktig.
mockMvc.perform(post("/users")
.contentType(MediaType.APPLICATION_JSON)
.content("{\"name\":\"Ada\"}"))
.andExpect(status().isCreated());Verifisere valideringsfeil
Send ugyldige inndata og kontroller 400 Bad Request for å bekrefte at valideringsreglene faktisk utløses.
mockMvc.perform(post("/users")
.contentType(MediaType.APPLICATION_JSON)
.content("{}"))
.andExpect(status().isBadRequest());Verifisere interaksjoner
Bruk Mockito sin verify for å bekrefte at kontrolleren faktisk kalte tjenesten det forventede antallet ganger.
verify(userService).find(1L);Når bør De bruke fullstendige integrasjonstester?
MockMvc-tester av testutvalg er raske, men mocker tjenesten. For ende-til-ende-sikkerhet på tvers av den faktiske stakken bør De supplere dem med fullstendige @SpringBootTest-integrasjonstester.
Rask kontroll
Test forståelsen Deres av testing av kontrollere med MockMvc.
Oppsummering
De brukte @WebMvcTest med MockMvc til å teste endepunkter, mocket tjenester med @MockBean og kontrollerte statuskoder og JSON. Disse testene av testutvalget er en rask første forsvarslinje.
Lær deg Java med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 21
- Leksjoner
- 84
Ofte stilte spørsmål
Er leksjonen «Test webkontrollere med MockMvc» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Komplett guide til Spring Boot 4, inkludert «Test webkontrollere med MockMvc», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Komplett guide til Spring Boot 4 inneholder totalt 4 leksjoner.
Hva lærer jeg i «Test webkontrollere med MockMvc»?
Skriv målrettede tester for REST-endepunktene dine med MockMvc, som simulerer HTTP-forespørsler uten å starte en ekte server. Du øver på Komplett guide til Spring Boot 4 med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Komplett guide til Spring Boot 4?
Ingen tidligere erfaring er nødvendig. Komplett guide til Spring Boot 4 på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «Test webkontrollere med MockMvc»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Komplett guide til Spring Boot 4-leksjonen?
Ja. Alle Komplett guide til Spring Boot 4-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Enhetstesting med JUnit og Mockito
- Integrasjonstesting med Spring Boot
- Slicetesting og TestContainers
- Test webkontrollere med MockMvc