Jest mit Next.js einrichten
Jest und React Testing Library werden häufig zusammen für Unit-Tests und Snapshot-Tests verwendet. Diese Anleitung zeigt Ihnen, wie Sie Jest mit Next.js einrichten und Ihre ersten Tests schreiben.
Hinweis: Da
async
Server-Komponenten neu im React-Ökosystem sind, unterstützt Jest diese derzeit nicht. Während Sie weiterhin Unit-Tests für synchrone Server- und Client-Komponenten ausführen können, empfehlen wir E2E-Tests fürasync
-Komponenten.
Schnellstart
Sie können create-next-app
mit dem Next.js with-jest Beispiel verwenden, um schnell zu beginnen:
Manuelle Einrichtung
Seit der Veröffentlichung von Next.js 12 verfügt Next.js über eine integrierte Konfiguration für Jest.
Um Jest einzurichten, installieren Sie jest
und die folgenden Pakete als Entwicklungsabhängigkeiten:
Generieren Sie eine grundlegende Jest-Konfigurationsdatei, indem Sie den folgenden Befehl ausführen:
Dies führt Sie durch eine Reihe von Eingabeaufforderungen zur Einrichtung von Jest für Ihr Projekt, einschließlich automatischer Erstellung einer jest.config.ts|js
-Datei.
Aktualisieren Sie Ihre Konfigurationsdatei für die Verwendung von next/jest
. Dieser Transformer enthält alle notwendigen Konfigurationsoptionen, damit Jest mit Next.js funktioniert:
Im Hintergrund konfiguriert next/jest
Jest automatisch, einschließlich:
- Einrichten von
transform
mit dem Next.js Compiler - Automatisches Mocken von Stylesheets (
.css
,.module.css
und deren scss-Varianten), Bildimporten undnext/font
- Laden von
.env
(und allen Varianten) inprocess.env
- Ignorieren von
node_modules
bei Test-Auflösung und -Transformationen - Ignorieren von
.next
bei Test-Auflösung - Laden von
next.config.js
für Flags, die SWC-Transformationen aktivieren
Hinweis: Um Umgebungsvariablen direkt zu testen, laden Sie diese manuell in einem separaten Setup-Skript oder in Ihrer
jest.config.ts
-Datei. Weitere Informationen finden Sie unter Test-Umgebungsvariablen.
Optional: Absolute Importe und Modul-Pfadalias behandeln
Wenn Ihr Projekt Modul-Pfadalias verwendet, müssen Sie Jest so konfigurieren, dass die Importe aufgelöst werden, indem Sie die Pfadoption in der jsconfig.json
-Datei mit der moduleNameMapper
-Option in der jest.config.js
-Datei abgleichen. Beispiel:
Optional: Jest mit benutzerdefinierten Matchern erweitern
@testing-library/jest-dom
enthält einen Satz praktischer benutzerdefinierter Matcher wie .toBeInTheDocument()
, die das Schreiben von Tests vereinfachen. Sie können die benutzerdefinierten Matcher für jeden Test importieren, indem Sie die folgende Option zur Jest-Konfigurationsdatei hinzufügen:
Fügen Sie dann in jest.setup.ts
den folgenden Import hinzu:
Hinweis:
extend-expect
wurde inv6.0
entfernt. Wenn Sie@testing-library/jest-dom
vor Version 6 verwenden, müssen Sie stattdessen@testing-library/jest-dom/extend-expect
importieren.
Wenn Sie weitere Setup-Optionen vor jedem Test hinzufügen müssen, können Sie diese zur obigen jest.setup.js
-Datei hinzufügen.
Ein Test-Skript zu package.json
hinzufügen:
Fügen Sie schließlich ein Jest-test
-Skript zu Ihrer package.json
-Datei hinzu:
jest --watch
führt Tests erneut aus, wenn eine Datei geändert wird. Weitere Jest-CLI-Optionen finden Sie in der Jest-Dokumentation.
Ihren ersten Test erstellen:
Ihr Projekt ist jetzt bereit, Tests auszuführen. Erstellen Sie einen Ordner namens __tests__
im Stammverzeichnis Ihres Projekts.
Zum Beispiel können wir einen Test hinzufügen, um zu überprüfen, ob die <Page />
-Komponente erfolgreich eine Überschrift rendert:
Optional können Sie einen Snapshot-Test hinzufügen, um unerwartete Änderungen in Ihrer Komponente zu verfolgen:
Tests ausführen
Führen Sie dann den folgenden Befehl aus, um Ihre Tests auszuführen:
Zusätzliche Ressourcen
Für weitere Informationen können diese Ressourcen hilfreich sein:
- Next.js mit Jest-Beispiel
- Jest-Dokumentation
- React Testing Library-Dokumentation
- Testing Playground - Verwenden Sie bewährte Testpraktiken, um Elemente zu finden.