Definicja #
Jest to kompleksowy framework testowy stworzony przez Meta (Facebook), zaprojektowany z myślą o minimalizacji konfiguracji i maksymalizacji wydajności. Jest domyślnym narzędziem testowym w ekosystemie React i zyskuje popularność w projektach Angular i Vue.
Kluczowe funkcje Jest:
- Zero-config — działa bez konfiguracji w projektach React (Create React App) i wielu innych
- Snapshot testing — automatyczne tworzenie i porównywanie zrzutów komponentów UI
- Built-in mocking —
jest.fn(),jest.mock(),jest.spyOn()bez dodatkowych bibliotek - Code coverage — wbudowane raportowanie pokrycia kodu przez Istanbul
- Parallel execution — testy uruchamiane w izolowanych procesach worker dla maksymalnej szybkości
- Watch mode — automatyczne re-uruchamianie testów przy zmianach plików
- TypeScript support — przez ts-jest lub Babel
- Timer mocks —
jest.useFakeTimers()do kontroli setTimeout, setInterval
Składnia Jest jest zbliżona do Jasmine (describe/it/expect), co ułatwia migrację. Jest jest często używany razem z React Testing Library do testowania komponentów.
Zastosowania #
- Testowanie komponentów React z React Testing Library — renderowanie, interakcje, asercje DOM
- Snapshot testing — automatyczna detekcja niezamierzonych zmian UI w komponentach
- Testowanie serwisów i modułów TypeScript z automatycznym mockowanie zależności
- Testowanie asynchronicznego kodu (fetch, Promise, async/await) z async/await lub resolves/rejects matcherami
- Pokrycie kodu — generowanie raportów HTML do identyfikacji nieprzetestowanych ścieżek
Ścieżka nauki #
Jest jest wstępnie skonfigurowany w projektach Create React App i Vite (z pluginem), więc nauka może rozpocząć się od pisania pierwszego testu bez konfiguracji. Oficjalna dokumentacja jestjs.io jest wyczerpująca i zawiera obszerne przykłady.
Zacznij od podstaw: describe/it/expect, matchery (toBe, toEqual, toContain), async testing. Następnie przejdź do mockowania — jest.fn() dla prostych mocków, jest.mock() do mockowania modułów, jest.spyOn() do szpiegowania. React Testing Library (testing-library.com/react) to de facto standard testowania komponentów React z Jestem.
Na poziomie zaawansowanym warto poznać: snapshot testing (zalety i pułapki), timer mocks (useFakeTimers), setupFilesAfterFramework, customowe matchery i konfigurację w projektach monorepo. Kurs Kenta C. Doddsa "Testing JavaScript" to najlepszy zasób do nauki testowania z Jestem i React Testing Library.