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));
}
}
Întrebări & Exemple de Cod:
@WebMvcTest și MockMvc în Spring BootAi o nelămurire despre utilizarea comenzii
@WebMvcTest și MockMvc în Spring Bootsau 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.