Zum Hauptinhalt springen

2016 bei Jest

· 9 Minuten Lesezeit
Inoffizielle Beta-Übersetzung

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

2016 war ein großes Jahr für JavaScript-Tests mit Jest. In den ersten sechs Monaten haben wir Jest vollständig neu geschrieben und eine solide Grundlage geschaffen, um die Leistung und das Entwicklererlebnis beim Testen von JavaScript-Code erheblich zu verbessern. Wir haben die gesamte Codebasis mit Flow typisiert, zahlreiche Integrationstests für Jest selbst erstellt und lerna eingeführt, um Jest von einem Framework zu einer Painless JavaScript Testing Platform weiterzuentwickeln.

Der neu geschaffene react-test-renderer ermöglichte endlich das Testen von React-Native-Komponenten. Durch das jest-react-native-Preset (jetzt direkt in react-native integriert) funktioniert Jest nun sofort einsatzbereit für jedes React-Projekt und ist vorkonfiguriert in create-react-app und react-native-Projekten enthalten. Wir haben Kernkomponenten von Jest in react-natives Packager integriert, und die völlig neue Snapshot-Testing-Funktion wird seither auch außerhalb von Jest genutzt: Sie wurde als "storyshots" in React Storybook integriert und wird von anderen Test-Runnern wie ava übernommen.

Das Projekt pretty-format wurde mit Fokus auf Leistung neu geschrieben, um Jests Snapshot-Funktion voranzutreiben, wurde kürzlich in Jests Monorepo integriert und ist auch für andere Test-Runner nützlich. Heute geht es bei Jest viel mehr darum, verschiedene Ideen und Lösungen für Tests zu sammeln, als um eine spezifische Implementierung eines Test-Frameworks.

Ich möchte mich herzlich bei allen bedanken, die in diesem Jahr zu Jest beigetragen haben, sowohl aus der Open-Source-Community als auch bei Facebook: Dmitrii Abramov, Cristian Carlesso, Dan Abramov, Daniel Lo Nigro, Maxim Derbin, Evan Scott, Forbes Lindesay, Keyan Zhang und 60 weiteren Personen. Wir heißen auch Michał Pierzchała (@thymikee) als ersten offiziellen externen Jest-Mitwirkenden willkommen. Er hat hervorragende Arbeit bei der Verwaltung von Issues und Pull Requests im Repository geleistet. Wenn du zu Jest beitragen möchtest, haben wir zahlreiche Aufgaben für Einsteiger und helfen dir gerne in unserem Discord-Kanal weiter.

repl.it mit Jest-Integration

Amjad Massad hat einen Jest-Container erstellt, sodass du Jest jetzt direkt im Browser ausprobieren kannst. Du kannst ihn ab sofort bei der Erstellung von GitHub-Issues verwenden, um Probleme schneller zu lösen. Amjad und Haya entwickeln repl.it, um Programmieren zu demokratisieren, indem sie leistungsstarke und dennoch einfache Tools und Plattformen für Lehrkräfte, Lernende und Entwickler bauen. Sie stellen auch talentierte Ingenieure ein!

Community-Update

Wir fühlen uns zutiefst geehrt, dass über 100 Unternehmen Jest in den letzten sechs Monaten eingeführt haben. Unternehmen wie Twitter, Pinterest, Paypal, nytimes, IBM (Watson), Spotify, eBay, SoundCloud, Intuit, FormidableLabs, Automattic, Trivago und Microsoft sind entweder vollständig oder teilweise zu Jest für ihre JavaScript-Testanforderungen gewechselt. Vielen Dank, dass Sie diesem Projekt eine Chance gegeben haben. Wir möchten uns auch bei allen bedanken, die auf Konferenzen und Meetups über Jest gesprochen haben, und bei allen, die Blogbeiträge darüber verfassen, wie Jest für sie funktioniert – oder auch nicht!

Hier ist, was in der Community in den letzten zwei Monaten passiert ist:

Neue Funktionen, Änderungen und Fixes in Jest 17 & 18

Jest wurde vor über fünf Jahren entwickelt und hat als älteres Framework technische Schulden angesammelt. Daher nehmen wir öfter Breaking Changes vor, als nötig erscheinen mag: Wir halten es für wichtig, technische Schulden schrittweise abzubauen, um Jest langfristig wartbar zu halten. Wir haben Jest 17 nicht per Blog-Post angekündigt. Wenn Sie im letzten Monat noch nicht aktualisiert haben, könnte das Changelog nützlich sein.

  • Breaking: pit wurde zugunsten von it oder test entfernt, mockImpl zugunsten von jest.fn() oder mockImplementation.

  • Breaking: --jsonOutputFile wurde in --outputFile umbenannt.

  • Breaking: testRegex wurde aktualisiert, um test.js und spec.js Dateien einzubeziehen.

  • Breaking: scriptPreprocessor wurde durch die neue transform-Option ersetzt.

  • Breaking: Die testResultsProcessor-Funktion muss nun die modifizierten Ergebnisse zurückgeben.

  • Potentiell Breaking: Korrekte Auflösung von snapshotSerializers, setupFiles, transform, testRunner und testResultsProcessor mit einem Auflösungsalgorithmus statt path.resolve. Hauptsächlich bedeutet dies, dass <rootDir> für diese Optionen nicht mehr benötigt wird.

  • Hinzugefügt: pretty-format und jest-editor-support wurden in Jest integriert.

  • Hinzugefügt: expect.any, expect.anything, expect.objectContaining, expect.arrayContaining, expect.stringMatching.

  • Hinzugefügt: --testResultsProcessor ist nun über die CLI verfügbar.

  • Hinzugefügt: Dateibeobachtung in jest-haste-map implementiert.

  • Hinzugefügt: Die Nutzung von Jest im Watch-Modus kann über JEST_HIDE_USAGE ausgeblendet werden.

  • Hinzugefügt: expect.assertions(number) stellt sicher, dass eine bestimmte Anzahl von Assertions in einem Test durchgeführt wird.

  • Hinzugefügt: .toMatchSnapshot(?string)-Funktion zum Benennen von Snapshots.

  • Hinzugefügt: toMatchObject, toHaveProperty, toHaveLength Matcher.

  • Hinzugefügt: expect.extend.

  • Hinzugefügt: Unterstützung für benutzerdefinierte Snapshot-Serializer.

  • Hinzugefügt: Große Diffs werden in Snapshots und Assertions standardmäßig eingeklappt. --expand (oder -e) zeigt das vollständige Diff an.

  • Hinzugefügt: jest.resetAllMocks ersetzt jest.clearAllMocks.

  • Hinzugefügt: --json enthält nun Informationen über einzelne Tests innerhalb einer Datei.

  • Behoben: Unbehandelte Promise-Rejections bei test.concurrent.

  • Behoben: babel-plugin-jest-hoist bei Verwendung von jest.mock mit drei Argumenten.

  • Behoben: Das JSON-Global in jest-environment-node stammt nun aus dem VM-Kontext statt dem Elternkontext.

  • Behoben: Jest druckt keine Stack Traces von Babel mehr aus.

  • Behoben: Falsche Timer werden zurückgesetzt, wenn FakeTimers.useTimers() aufgerufen wird.

  • Behoben: Reguläre Ausdrücke werden in Snapshots korrekt maskiert.

  • Behoben: Verbesserte Darstellung großer Objekte.

  • Behoben: NaN% Failed in der Systembenachrichtigung bei Verwendung von --notify.

  • Behoben: Der erste Testlauf ohne zwischengespeicherte Timings verwendet nun separate Prozesse statt im Band zu laufen.

  • Behoben: Map/Set-Vergleiche.

  • Behoben: test.concurrent funktioniert nun mit --testNamePattern.

  • Behoben: Verbesserter .toContain-Matcher.

  • Behoben: Module mit Plattform-Erweiterungen werden unter react-native korrekt aufgelöst.

  • Behoben: Globale Built-in-Objekte in jest-environment-node funktionieren nun ordnungsgemäß.

  • Behoben: Mock-Objekte werden nun im VM-Kontext statt im Elternkontext erstellt.

  • Behoben: .babelrc ist nun Teil des Transform-Cache-Keys in babel-jest.

  • Behoben: Docblock-Parsing mit Haste-Modulen.

  • Behoben: Beendigung mit korrektem Code bei Nichterreichen des Coverage-Schwellenwerts.

  • Behoben: Jest löscht nun den gesamten Scrollback im Watch-Modus.

  • Veraltet: jest-react-native wurde veraltet und leitet nun an react-native weiter.

Pläne für Jest in H1 2017

Vor sechs Monaten haben wir unsere Pläne für Jest geteilt und wir freuen uns, dass wir fast alle erfolgreich umsetzen konnten. Für die nächsten sechs Monate planen wir:

  • Sofortiges Feedback: Nuclide-Integration und ein verbesserter schnellerer Watch-Modus.

  • Verbesserte Developer Experience: Neue Mocking-APIs und verbesserte Assertions.

  • Bessere Performance und Speichernutzung: Analyse von Jest und bewusstere Effizienz.

  • Snapshot-Verbesserungen: Snapshot-Genehmigungsmodus, Syntax-Highlighting und verbesserte react-test-renderer-APIs.

  • Website: Wir überarbeiten die Website und Dokumentation und fügen ein Jest-Cheat-Sheet hinzu.

Wir geben keine Zeitpläne oder Schätzungen für diese Features ab und werden möglicherweise nicht alles umsetzen. Wenn ihr helfen möchtet, diese Ziele zu erreichen, sendet uns Issues und Pull Requests mit euren Ideen – lasst uns 2017 gemeinsam Jest verbessern.