Zum Hauptinhalt springen

Jest 13.0: Flow & REPL

· 3 Minuten Lesezeit
Inoffizielle Beta-Übersetzung

Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →

Heute freuen wir uns, die nächste Hauptversion von Jest anzukündigen. Wir haben wesentliche Änderungen an Jest vorgenommen, die Ihnen und der gesamten JavaScript-Testinfrastruktur bei Facebook zugutekommen werden. Am wichtigsten ist, dass wir während eines kürzlichen Jest-Hackathons bei Facebook statische Typen zu sämtlichem Jest-Code hinzugefügt haben. Fünfzehn Personen arbeiteten Tag und Nacht daran, Flow-Typen zu Jest hinzuzufügen und neue Funktionen zu integrieren. Die Flow-Typen dienen zwei Zwecken: Erstens sind wir überzeugt, dass Code zum Lesen geschrieben wird. Meist wird Code nur einmal geschrieben, aber über Jahre von Dutzenden Personen gelesen. Statische Typen im Projekt helfen, den Code zu dokumentieren und bestimmte Architekturaspekte von Jest zu erklären. Zweitens erleichtern statische Typen die Wartung und ermöglichen es uns, Teile von Jest selbstbewusster zu refaktorisieren, ohne Angst vor Fehlern zu haben.

Das Flow-Projekt hat sich bei Facebook stark weiterentwickelt und wurde erfolgreich in vielen unserer Frameworks sowie fast unserem gesamten Produktcode übernommen. Die Einführung lässt sich hervorragend parallelisieren – sie kann dateiweise erfolgen, bis genug der Codebasis gut typisiert ist. Dann liefert Flow echten Mehrwert und hilft bei umfangreichen Änderungen. Dadurch wurden viele kleine Randfälle und Fehler entdeckt.

Mit Hilfe von lerna haben wir die Modularisierung des Jest-Projekts fortgesetzt. Durch eine kleine Konfigurationsanpassung harmonieren Flow und lerna nun miteinander. Die Aufteilung von Jest in Pakete half uns, Modulgrenzen neu zu überdenken, und ermöglichte es uns, nützliche Pakete eigenständig zu veröffentlichen: Die jest-runtime und jest-repl CLI-Tools erlauben nun das Ausführen von Skripten in einer abgeschotteten Jest-Umgebung, sodass Sie Ihre App direkt von der Kommandozeile aus starten und debuggen können. Dies ist besonders hilfreich für Projekte, die Facebooks @providesModule-Modulkonvention verwenden. Installieren Sie einfach jest-repl und führen Sie es im selben Ordner aus, in dem Sie normalerweise Ihre Tests ausführen! Wir haben außerdem ein jest-changed-files-Paket veröffentlicht, das geänderte Dateien in der Versionskontrolle für git oder hg findet – eine häufige Anforderung in Entwicklerwerkzeugen.

Neue und verbesserte Funktionen

  • Hinzugefügt: Ein Benachrichtigungs-Plugin zeigt bei Verwendung von --notify eine Testlauf-Benachrichtigung an.

  • Hinzugefügt: Eine browser-Konfigurationsoption löst npm-Pakete korrekt auf, die ein browser-Feld in package.json enthalten – ideal für Tests von Client-seitigen Apps.

  • Verbessert: Die "Keine Tests gefunden"-Meldung zeigt nun, welche Tests gefunden wurden und wie sie gefiltert wurden.

  • Hinzugefügt: jest.isMockFunction(jest.fn()) zum Testen von Mock-Funktionen.

  • Verbessert: Testreporter-Darstellung und eine Fehlerzusammenfassung bei vielen Tests.

  • Hinzugefügt: Unterstützung für das Mocken virtueller Module via jest.mock('Module', implementation, {virtual: true}).

  • Entfernt: Der .haste_cache-Ordner. Jest nutzt nun den betriebssystemüblichen temporären Speicherort.

  • Hinzugefügt: Dauer einzelner Tests im ausführlichen Modus.

  • Hinzugefügt: Möglichkeit, Snapshots in Jest aufzuzeichnen. Ein separater Blogpost zu dieser Funktion folgt bald.

Abschließend präsentieren wir ein komplettes Website-Redesign von Matthew Johnston und haben Dokumentation zur Verwendung von Jest mit webpack hinzugefügt. Viel Spaß beim Testen!