@WebMvcTest și MockMvc în Spring Boot în Spring Boot

test Spring Boot 3.x / JUnit 5 / MockMvc Q&A / Distribuie cod

Testarea izolată și ultra-rapidă a controllerelor REST: verificarea rutelor, a codurilor de stare și a răspunsurilor JSON fără pornirea serverului HTTP.

Sintaxă
@WebMvcTest(UserController.class) / mockMvc.perform(get(...))

Spre deosebire de @SpringBootTest (care încarcă toate bean-urile din aplicație), adnotarea @WebMvcTest realizează o feliere a contextului (test slicing): încarcă strict componentele stratului web (@Controller, @ControllerAdvice, convertoare JSON).

Utilizând obiectul MockMvc, testele simulează cereri HTTP reale în memorie, verifică antetele, codurile de stare și validează câmpurile din răspunsul JSON prin expresii jsonPath(), totul executându-se în doar câteva milisecunde.

Exemplu: Test MockMvc cu validare JSON Path
package ro.dexblog.demo.controller;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import ro.dexblog.demo.service.OrderService;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;

@WebMvcTest(OrderController.class)
class OrderControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @MockBean
    private OrderService orderService;

    @Test
    void shouldReturnOrderById() throws Exception {
        mockMvc.perform(get("/api/v1/orders/10").accept(MediaType.APPLICATION_JSON))
            .andExpect(status().isOk())
            .andExpect(content().contentType(MediaType.APPLICATION_JSON));
    }
}

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: @WebMvcTest și MockMvc în Spring Boot

Ai o nelămurire despre utilizarea comenzii @WebMvcTest și MockMvc în Spring Boot sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.