0Pricing
Testing Mastery: JUnit, Mockito & Integration Tests · Lekcja

Testowanie warstwy webowej za pomocą @WebMvcTest i MockMvc

Przetestują Państwo kontrolery Spring Boot w izolacji, używając @WebMvcTest i MockMvc bez uruchamiania pełnego kontekstu aplikacji.

Testowanie warstwy webowej za pomocą @WebMvcTest i MockMvc to bezpłatna lekcja Testing Mastery: JUnit, Mockito & Integration Tests na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Testing Mastery: JUnit, Mockito & Integration Tests, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Testing Mastery: JUnit, Mockito & Integration Tests zawiera 4 lekcji w sumie.

Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.

Why Slice Tests?

Loading the entire Spring context for every controller test is slow. Spring Boot offers test slices that load only the beans you need. @WebMvcTest loads just the web layer.

What @WebMvcTest Loads

@WebMvcTest configures controllers, filters, and JSON converters, but not services or repositories. Those collaborators are supplied as mocks.

Declaring the Test

Target a single controller so the slice stays small and fast.

@WebMvcTest(UserController.class)
class UserControllerTest {
  @Autowired MockMvc mockMvc;
}

Mocking the Service

The controller's service dependency is replaced with a Mockito mock using @MockBean, which places the mock in the context.

@MockBean
UserService userService;

Performing a Request

MockMvc simulates HTTP requests against your controller without a running server.

mockMvc.perform(get("/users/1"))
    .andExpect(status().isOk());

Stubbing Then Asserting

Stub the mocked service, fire the request, and assert on the response body and status.

when(userService.find(1L))
    .thenReturn(new User(1L, "Ada"));
mockMvc.perform(get("/users/1"))
    .andExpect(jsonPath("$.name").value("Ada"));

Checking Status Codes

Validate error mappings, such as a 404 when the service signals a missing entity.

when(userService.find(9L))
    .thenThrow(new NotFoundException());
mockMvc.perform(get("/users/9"))
    .andExpect(status().isNotFound());

Testing POST with a Body

Send JSON content and verify the controller deserializes and responds correctly.

mockMvc.perform(post("/users")
    .contentType("application/json")
    .content("{\"name\":\"Ada\"}"))
    .andExpect(status().isCreated());

JsonPath Assertions

jsonPath expressions let you assert on nested fields, array sizes, and values inside the JSON response.

.andExpect(jsonPath("$.items.length()").value(3))

Slice vs Full Context

Use @WebMvcTest for focused, fast web-layer tests. Reserve @SpringBootTest for true end-to-end flows where you want the whole context wired.

Speed Benefits

Because only the web layer loads, these tests start in a fraction of the time of a full-context test, encouraging more thorough controller coverage.

Quick Check

How are service dependencies handled in a @WebMvcTest?

Recap

You learned web-layer slice testing:

  • @WebMvcTest loads only controllers and web infrastructure
  • MockMvc simulates HTTP requests without a server
  • @MockBean supplies mocked services
  • Assert status and body with jsonPath

Często zadawane pytania

Czy lekcja „Testowanie warstwy webowej za pomocą @WebMvcTest i MockMvc” jest bezpłatna?

Tak — pełny tekst „Testowanie warstwy webowej za pomocą @WebMvcTest i MockMvc” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Testing Mastery: JUnit, Mockito & Integration Tests, przejdź na CoddyKit PRO. Kurs Testing Mastery: JUnit, Mockito & Integration Tests zawiera 4 lekcji w sumie.

Co nauczysz się w „Testowanie warstwy webowej za pomocą @WebMvcTest i MockMvc”?

Przetestują Państwo kontrolery Spring Boot w izolacji, używając @WebMvcTest i MockMvc bez uruchamiania pełnego kontekstu aplikacji. Ćwiczysz Testing Mastery: JUnit, Mockito & Integration Tests z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Testing Mastery: JUnit, Mockito & Integration Tests?

Nie wymagamy żadnego doświadczenia. Testing Mastery: JUnit, Mockito & Integration Tests w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Testowanie warstwy webowej za pomocą @WebMvcTest i MockMvc”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Testing Mastery: JUnit, Mockito & Integration Tests?

Tak. Każda lekcja Testing Mastery: JUnit, Mockito & Integration Tests zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Framework kontekstu testowego Spring
  2. Testowanie API RESTful
  3. Wbudowane bazy danych na potrzeby testów
  4. Testowanie warstwy webowej za pomocą @WebMvcTest i MockMvc
← Powrót do Testing Mastery: JUnit, Mockito & Integration Tests