Generator jest.config.js
Konfiguracja testów w Jest
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator konfiguracji Jest
Jest to popularny framework testów JavaScript. Plik konfiguracyjny określa środowisko, katalogi testów, mapowanie modułów i raportowanie pokrycia.
Najważniejsze opcje
| Opcja | Znaczenie |
|---|---|
| testEnvironment | node (serwer) lub jsdom (przeglądarka) |
| roots | katalogi, w których szukać testów |
| moduleNameMapper | mapowanie aliasów importów |
| setupFilesAfterEnv | pliki ładowane przed testami |
| collectCoverage | zbieranie pokrycia kodu |
Przykład
Dla aplikacji frontendowej ustaw testEnvironment: 'jsdom'. Alias @ zmapuj na katalog src, aby importy były krótsze w testach i kodzie.
Uruchamianie
npx jest— uruchom wszystkie testy.npx jest --watch— tryb obserwacji.npx jest --coverage— raport pokrycia.
Jak działa generator konfiguracji Jest
Generator zbiera wartości wpisane w formularzu i składa z nich gotowy plik jest.config.js. Każde pole odpowiada jednemu kluczowi obiektu konfiguracyjnego: wybór środowiska trafia do testEnvironment, lista katalogów do roots, pary aliasów do moduleNameMapper, ścieżki plików startowych do setupFilesAfterEnv, a przełącznik pokrycia do collectCoverage. Wynikiem jest moduł eksportujący obiekt — w wariancie CommonJS jako module.exports, w wariancie ESM jako export default.
Mechanizm jest prosty: puste pola są pomijane, więc w pliku znajdą się wyłącznie te klucze, które rzeczywiście wypełnisz. Pozostałe opcje zostają na wartościach domyślnych Jest, a to one decydują o większości zachowań frameworka. Kolejność kluczy w pliku nie ma znaczenia — Jest czyta obiekt, nie kolejność wierszy. Znaczenie ma natomiast typ wartości: ścieżki i wzorce to łańcuchy znaków, listy katalogów i plików to tablice, a mapowanie aliasów to obiekt klucz-wartość.
Konfiguracja z pliku działa jak warstwa bazowa. Flagi przekazane w wierszu poleceń mają nad nią pierwszeństwo, dlatego ten sam plik sprawdza się lokalnie i w potoku ciągłej integracji. Generator nie uruchamia testów, nie waliduje istnienia katalogów ani nie sprawdza wersji Jest w package.json — tworzy wyłącznie tekst pliku, który wklejasz do repozytorium.
Przykład krok po kroku
- Zakładasz projekt, w którym kod źródłowy leży w katalogu src, a testy mają rozszerzenie .test.js. W formularzu wybierasz środowisko jsdom, ponieważ testujesz komponenty korzystające z DOM.
- W polu katalogów głównych wpisujesz jedną ścieżkę: <rootDir>/src. Dzięki temu Jest nie przeszukuje node_modules ani katalogu z plikami po budowaniu.
- Dodajesz alias modułu: jako klucz wpisujesz ^@/(.*)$, jako wartość <rootDir>/src/$1. Import @/utils/date zacznie działać zamiast ścieżki względnej z serią ../.
- Wskazujesz plik startowy: <rootDir>/src/setupTests.js. Plik z tej listy ładuje się przed każdym zestawem testów, więc rozszerzenia matcherów są dostępne od pierwszego przypadku testowego.
- Włączasz zbieranie pokrycia i ustawiasz progi: branches 70, functions 80, lines 80, statements 80. To wartości procentowe wybrane przez Ciebie — jeśli pokrycie spadnie poniżej któregokolwiek progu, uruchomienie z flagą coverage zakończy się kodem błędu.
- Kopiujesz wygenerowany plik jest.config.js do katalogu głównego projektu, obok package.json, i uruchamiasz npx jest. Jest wczytuje konfigurację automatycznie, bez dodatkowych flag.
Tabela referencyjna pozostałych opcji
| Klucz konfiguracji | Przykładowa wartość | Kiedy stosować |
|---|---|---|
| testMatch | ["**/__tests__/**/*.js", "**/?(*.)+(spec|test).js"] | Gdy testy nie leżą w lokalizacjach domyślnych |
| transform | separator zależny od użytego preset | Gdy używasz TypeScriptu lub składni JSX |
| coverageThreshold | global z progami lines, functions, branches | Gdy chcesz wymuszać minimalne pokrycie w CI |
| testPathIgnorePatterns | ["/node_modules/", "/dist/"] | Gdy katalog wynikowy zawiera skopiowane testy |
| moduleFileExtensions | ["js", "jsx", "ts", "tsx", "json"] | Gdy importujesz pliki bez rozszerzenia |
| clearMocks | true | Gdy mocki mają być zerowane między testami |
| testTimeout | 10000 | Gdy pojedynczy test trwa dłużej niż domyślnie |
| reporters | lista reporterów, np. domyślny plus raport XML | Gdy system CI potrzebuje raportu w osobnym formacie |
Praktyczne wskazówki
- Trzymaj konfigurację w jednym miejscu — jeśli ustawienia trafiają także do sekcji jest w package.json, wybierz jedną z tych lokalizacji. Dwie konkurujące konfiguracje utrudniają diagnozę, gdy testy zachowują się inaczej niż oczekujesz.
- Zacznij od minimum — środowisko i katalog główny wystarczą, żeby ruszyć z testami. Kolejne klucze dodawaj dopiero wtedy, gdy pojawi się realna potrzeba, bo każdy wpis trzeba później utrzymywać.
- Używaj tokenu rootDir w ścieżkach — ścieżki zakotwiczone w katalogu projektu zachowują się przewidywalnie niezależnie od tego, z którego katalogu uruchomisz Jest.
- Progi pokrycia ustawiaj ostrożnie — zbyt wysoki próg blokuje każdą gałąź, także tę z drobną poprawką. Lepiej zacząć od wartości osiągalnej i podnosić ją wraz z liczbą testów.
- Powtórz aliasy poza Jest — mapowanie z moduleNameMapper musi znać także edytor i narzędzie budujące, inaczej zobaczysz podkreślony import, mimo że testy przechodzą.
Czego generator nie uwzględnia
- Nie sprawdza, czy ścieżki istnieją — wygeneruje wpis dla katalogu lub pliku, którego nie ma w repozytorium. Błąd pojawi się dopiero przy uruchomieniu testów, często w mało czytelnym komunikacie.
- Nie instaluje zależności — jeśli wybierzesz transformację przez preset TypeScriptu, pakiet i jego konfigurację dodajesz samodzielnie.
- Nie zna Twojego bundlera — aliasy ustawione w konfiguracji Jest trzeba ręcznie powtórzyć w ustawieniach kompilatora lub narzędzia budującego, inaczej import zadziała w testach, ale nie w aplikacji.
- Nie wykrywa konfliktów ani wersji — równolegle działająca konfiguracja w package.json nie jest sygnalizowana, a część kluczy zmieniała nazwy między wersjami Jest, co generator pomija.
Najczęstsze pytania
node czy jsdom?
Wybierz node dla kodu serwerowego i jsdom dla testów komponentów oraz kodu używającego DOM.
Po co setupFilesAfterEnv?
Ładuje rozszerzenia matcherów i globalne konfiguracje (np. testing-library) przed wykonaniem testów.
Jak testować TypeScript w Jest?
Użyj transformacji ts-jest lub babel-jest z presetem TypeScript. Konfigurację dodaje się w sekcji transform.
Czym jest plik jest.config.js?
To plik z obiektem konfiguracyjnym, który Jest wczytuje automatycznie przy starcie. Zapisuje się w nim środowisko testowe, katalogi z testami, mapowanie modułów i ustawienia pokrycia, dzięki czemu nie trzeba powtarzać tych flag w wierszu poleceń.
Jaka jest różnica między jest.config.js a sekcją jest w package.json?
Efekt działania jest taki sam, różni się tylko miejsce zapisu. Plik bywa wygodniejszy przy dłuższej konfiguracji i pozwala korzystać ze składni modułów, natomiast package.json trzyma wszystko w jednym miejscu. Nie ustawiaj obu naraz.
Jak ustawić aliasy importów w Jest?
Służy do tego moduleNameMapper. Podajesz wzorzec pasujący do importu jako klucz i docelową ścieżkę z tokenem rootDir oraz grupą przechwytującą jako wartość. Ten sam alias warto zdefiniować w konfiguracji kompilatora lub bundlera.
Dlaczego testy nie widzą plików z katalogu src?
Najczęściej brakuje wpisu w roots albo wzorzec w testMatch nie pasuje do nazw plików. Sprawdź też, czy w testPathIgnorePatterns nie znalazł się przypadkiem katalog z kodem źródłowym.
Jak wymusić minimalne pokrycie kodu w Jest?
Ustaw coverageThreshold i uruchamiaj testy z flagą coverage. Gdy wynik spadnie poniżej progu, proces zakończy się kodem błędu, co blokuje merge w systemie ciągłej integracji.