🃏 Jest 19: Immersiver Watch-Modus & Verbesserungen der Testplattform
Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →
Heute freuen wir uns, Version 19 der Jest-Testplattform auszuliefern. Es ist die bisher größte Jest-Veröffentlichung und wir sind sehr gespannt, Ihnen zu zeigen, was wir in den letzten zwei Monaten aufgebaut haben:
Immersiver Watch-Modus
Wir haben den Watch-Modus komplett neu geschrieben, um ihn sofort und erweiterbar zu machen. Dadurch ist die Nutzungserfahrung wirklich immersiv: Tests werden sofort nach einer Dateiänderung erneut ausgeführt und wir haben es einfach gemacht, die richtigen Tests auszuwählen.
Snapshot-Aktualisierungen
Wir haben einige Änderungen am Snapshot-Format vorgenommen. Solche Änderungen machen wir nicht oft und ziehen sie nur in Betracht, wenn sie tatsächlich die Funktionsweise von Snapshots verbessern. Neben der Einführung einer Snapshot-Versionsnummer haben wir mehrere Änderungen umgesetzt, die wir schon länger am Format vornehmen wollten:
-
Wir haben das Präfix "test" in Snapshot-Namen von Top-Level-
test- oderit-Aufrufen entfernt. -
Wir haben die Darstellung von React-Elementen optimiert, um weniger Änderungen zu verursachen, wenn sich die letzte Property eines Elements ändert.
-
Wir haben den Zeichen-Escape-Mechanismus robuster gestaltet.
Vorher:
exports[`test snap 1`] = `
<header>
<h1>
Jest \"19\"
</h1>
<Subtitle
name="Painless JavaScript Testing" />
</header>
`;
Nachher (ohne "test"-Präfix, bessere JSX-Darstellung, Versionskopfzeile):
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`snap 1`] = `
<header>
<h1>
Jest "19"
</h1>
<Subtitle
name="Painless JavaScript Testing"
/>
</header>
`;
Wir fanden, es ist ein guter Zeitpunkt, versionierte Snapshots einzuführen, um sicherzustellen, dass alle Entwickler eine kompatible Jest-Version verwenden. So weisen wir Sie darauf hin, wenn Sie Ihr Snapshot aktualisieren müssen:

Bitte stellen Sie sicher, dass Sie alle lokalen Änderungen zurücksetzen, bevor Sie aktualisieren, um einen reibungslosen Übergang zu gewährleisten und zu verhindern, dass unerwünschte Änderungen aus fehlgeschlagenen Tests in Ihre neuen Snapshots übernommen werden.
Verbesserte Darstellung übersprungener Tests
Übersprungene Tests werden jetzt als einzelne Zeile ausgegeben, anstatt jeden einzelnen anzuzeigen, wenn im ausführlichen Modus oder einer einzelnen Suite getestet wird. So können Sie sich hoffentlich besser auf die aktuell wichtigen Tests konzentrieren. Es beansprucht auch viel weniger Platz!

Neue CLI-Argumente
Jest 19 bringt zwei neue coverage-bezogene Argumente mit, die Sie über die CLI ausführen können:
-
--collectCoverageFrom -
--coverageDirectory
Wir melden jetzt auch Fehler bei ungültigen CLI-Argumenten, anstatt sie zu ignorieren. Aber wir unterstützen Sie mit hilfreichen Fehlermeldungen wie dieser, zum Beispiel wenn Sie jest --watc ausführen:

expect-Verbesserungen
Wir haben nahezu volle Feature-Parität mit dem expect-npm-Paket erreicht. Michael Jackson, der Autor des Pakets, hat zugestimmt, es an das Jest-Projekt zu spenden, was bedeutet, dass jest-matchers in expect umbenannt wird. Da unsere expect-Version nicht vollständig kompatibel sein soll, arbeitet Christopher Chedeau an einem Codemod, um den Übergang schmerzfrei zu gestalten. Christopher hat auch mehrere Verbesserungen an jest-matchers vorgenommen, die es ermöglichen, es außerhalb von Jest zu verwenden und sogar innerhalb von Browsern funktionieren.
eslint-plugin-jest – unser eigenes ESLint-Plugin
Dank Jonathan Kim hat Jest endlich sein eigenes offizielles ESLint-Plugin. Es bietet drei Regeln:
-
no-disabled-tests - Diese Regel verhindert, dass du versehentlich deaktivierte Tests committest.
-
no-focused-tests - Diese Regel verhindert, dass du fokussierte Tests commitest, die alle anderen Tests im selben Testlauf deaktivieren würden.
-
no-identical-title - Verbietet identische Titel in Testnamen.
Du kannst es mit npm install --save-dev eslint-plugin-jest oder yarn add --dev eslint eslint-plugin-jest installieren und durch Hinzufügen von {"plugins": ["jest"]} zu deiner ESLint-Konfiguration aktivieren.
Neues öffentliches Paket: jest-validate
Während wir den Validierungs- und Normalisierungscode für Jests Konfiguration refaktoriert haben, waren wir so begeistert von den neuen Fehlermeldungen, dass wir ihn in ein eigenes Modul ausgelagert haben. Mit Jest 19 heißt unser Paket-Familienzuwachs jest-validate.
jest-validate ist ein generisches Konfigurationsvalidierungstool, das dir bei Warnungen, Fehlern und Deprecation-Hinweisen in deinen JavaScript-Tools hilft. Es zeigt benutzerfreundliche Beispiele korrekter Konfigurationen und bietet eine einfache aber leistungsstarke API. Wir hoffen, es wird deine Projekte bereichern!

Wir freuen uns bekanntzugeben, dass jest-validate seit v0.12 die Konfigurationsoptionen von prettier validiert. Probier es in deinen Projekten aus, gib uns Feedback und verbessere es durch Pull Requests auf GitHub.
Verbesserte asymmetrische Matcher
Wir haben die Implementierung der asymmetrischen Matcher von Jasmine nach Jest migriert und damit die Benutzererfahrung deutlich verbessert. Die Matcher werden jetzt übersichtlich formatiert, wir haben den neuen expect.stringContaining()-Matcher hinzugefügt und ihn mit expect.toMatchObject() kombiniert:

Bessere manuelle Mocks
Manuelle Mocks funktionieren jetzt endlich mit verschachtelten Ordnern. Beispielsweise wird __mocks__/react-native/Libraries/Text/Text.js nun korrekt gemockt. Wir haben Probleme mit virtuellen Mocks und transitiven Abhängigkeiten behoben und moduleNameMapper optimiert, damit mehrere Muster nicht denselben Mock überschreiben.
Breaking Changes
Wir haben die nie offiziell unterstützte mocksPattern-Konfigurationsoption entfernt und testPathDirs in roots umbenannt, was den Zweck klarer beschreibt. Die Standardkonfiguration für roots ist ["<rootDir>"] und kann angepasst werden, um beliebig viele Verzeichnisse einzubeziehen. Die rootDir-Konfigurationsoption wurde schon immer hauptsächlich als Token für andere Konfigurationsoptionen verwendet, und diese Umbenennung sollte die Konfiguration von Jest verständlicher machen.
Überarbeitete Dokumentation
Wie du vielleicht schon gesehen hast, haben Hector Ramos und Kevin Lacker Jests Dokumentation neu gestaltet. Die Website ist jetzt in Docs und API aufgeteilt:
-
Unter Dokumentation findest du eine Einführung in Jest, inklusive Erste Schritte, Testen von asynchronem Code und praktischen Anleitungen wie Snapshot-Tests, Testen von React Native Apps, Verwendung mit webpack oder Migration zu Jest und vieles mehr!
-
Im API-Bereich findest du hingegen alle von Jest bereitgestellten Methoden aufgelistet: die
expect- undjest-Objekte, Mock-Funktionen, Globals sowie Konfigurationsoptionen aus package.json und der CLI.
Die Homepage wurde komplett neu gestaltet, um besser zu vermitteln, worum es bei Jest geht: "Zero configuration testing platform". Wir haben außerdem sichergestellt, dass sie auf Mobilgeräten besser lesbar ist. Und für RSS-Nutzer bieten wir jetzt endlich einen Feed für unseren Blog an.
Neuigkeiten aus der Community
-
Dieser Vortrag hat uns begeistert: "Introduction to Jest" von Vas Boroviak.
-
Folge @jestjs_ auf Twitter.
-
Das Jest-Core-Team synchronisiert sich wöchentlich, um aktuelle und zukünftige Themen zu besprechen. Wenn du an Jest mitwirken möchtest, melde dich bei uns, reiche ein paar Pull Requests ein und nimm an unseren wöchentlichen Teamtreffen teil.
-
Die tollen Ingenieure bei Artsy haben über Jest als Teil ihres Frontend-Stacks 2017 geschrieben.
-
Stephen Scott hat einen ausführlichen Artikel über das Testen von React-Komponenten verfasst, in dem er Vor- und Nachteile verschiedener Ansätze abwägt.
-
Die Verwendung von Jest mit vue.js wurde nach Cristian Carlessos Blogpost viel einfacher.
-
Michele Bertoli hat ein Buch über React Design Patterns and Best Practices geschrieben, das ein ganzes Kapitel über Jest enthält.
-
Verbesserter
--notify-Befehl, der eine Systembenachrichtigung anzeigt und jetzt Tests direkt aus der Benachrichtigung neu starten kann. Dies ist tatsächlich eine Jest-Funktion - wir prüfen nur, ob du diesen Blogpost immer noch liest 😉. -
Jest ist jetzt Teil von react-boilerplate.
-
Lese über die verborgenen Kräfte von Jest-Matchern.
Abschließend freuen wir uns bekanntzugeben, dass der ava-Testrunner Teile der Jest-Plattform übernommen hat und nun grundlegende Snapshot-Unterstützung bietet sowie pretty-format verwendet. Die Konsolidierung der Testinfrastruktur erleichtert das Erlernen von Anwendungstests und ermöglicht uns den Austausch von Best Practices. Wir sind gespannt, was wir in Zukunft von bestehenden Testbibliotheken lernen können.
Den vollständigen Changelog findet ihr auf GitHub. Jest 19 war ein echtes Gemeinschaftsprojekt der JavaScript-Community mit 17 Mitwirkenden für dieses Release. Wir danken jedem Einzelnen von euch für die Hilfe, dieses Projekt großartig zu machen.
Dieser Blogbeitrag wurde von Rogelio Guzman und Michał Pierzchała verfasst.
