2016 bei Jest
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:
-
Jason Bonta und Dmitrii Abramov haben die „Testing Pyramid“ neu definiert, über die wir bei Facebook viel diskutiert haben.
-
jest-codemods ermöglicht jetzt den mühelosen Wechsel von Mocha, Tape und Ava zu Jest.
-
Das React-Team kündigte Verbesserungen am react-test-renderer in Version 15.4.0 an.
-
Orta Therox entwickelte eine großartige vscode-jest-Integration und spendete den Code für die Editor-Unterstützung an Jest.
-
Pavithra Kodmad dokumentiert Flipkarts Einführung von Jest und teilt einige Einstiegstipps.
-
Kent C. Dodds berichtete über die Migration zu Jest bei Paypal und Jason Brown schrieb ebenfalls über die Migration zu Jest.
-
Ben McCormick schrieb über Zeitersparnis mit Jest.
-
Eric Clemmons berichtete über Snapshots und Storybook-Integration.
-
Edvin Erikson erklärte, wie man Tap-Output in Jest erhält.
-
jest-html bringt Snapshot-Diffs in Ihren Browser.
-
Es gab einige interessante Diskussionen auf Hacker News über Jest.
-
Die Community startete eine großartige Diskussion über die Zukunft von enzyme.
-
Ruben Oostinga schrieb über die Kombination von Chai- und Jest-Matchern.
-
Emil Ong erklärte, warum „TDD für Ihr Frontend sinnlos erscheint“.
-
Nate Hunzaker berichtete über End-to-End-Tests mit Jest und Nightmare.
-
Jest mit Angular zu verwenden funktioniert problemlos laut Matthieu Lux.
-
Eine spannende Diskussion über den Zweck von Snapshot-Tests findet aktuell statt.
-
Dmitrii veröffentlichte ein neues Musikvideo mit seiner Metal-Band.
-
lazyspec hilft beim schnellen Erstellen von Smoke Tests bei der Test-Einführung in bestehende Codebasen.
-
Patrick Stapfer hielt einen Lightning Talk über vim und Jest.
-
Mark Dalgleish kommentierte den Wert von Snapshot-Tests.
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:
pitwurde zugunsten vonitodertestentfernt,mockImplzugunsten vonjest.fn()odermockImplementation. -
Breaking:
--jsonOutputFilewurde in--outputFileumbenannt. -
Breaking:
testRegexwurde aktualisiert, umtest.jsundspec.jsDateien einzubeziehen. -
Breaking:
scriptPreprocessorwurde durch die neuetransform-Option ersetzt. -
Breaking: Die
testResultsProcessor-Funktion muss nun die modifizierten Ergebnisse zurückgeben. -
Potentiell Breaking: Korrekte Auflösung von
snapshotSerializers,setupFiles,transform,testRunnerundtestResultsProcessormit einem Auflösungsalgorithmus stattpath.resolve. Hauptsächlich bedeutet dies, dass<rootDir>für diese Optionen nicht mehr benötigt wird. -
Hinzugefügt:
pretty-formatundjest-editor-supportwurden in Jest integriert. -
Hinzugefügt:
expect.any,expect.anything,expect.objectContaining,expect.arrayContaining,expect.stringMatching. -
Hinzugefügt:
--testResultsProcessorist nun über die CLI verfügbar. -
Hinzugefügt: Dateibeobachtung in
jest-haste-mapimplementiert. -
Hinzugefügt: Die Nutzung von Jest im Watch-Modus kann über
JEST_HIDE_USAGEausgeblendet 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,toHaveLengthMatcher. -
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.resetAllMocksersetztjest.clearAllMocks. -
Hinzugefügt:
--jsonenthält nun Informationen über einzelne Tests innerhalb einer Datei. -
Behoben: Unbehandelte Promise-Rejections bei
test.concurrent. -
Behoben:
babel-plugin-jest-hoistbei Verwendung vonjest.mockmit drei Argumenten. -
Behoben: Das
JSON-Global injest-environment-nodestammt 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% Failedin 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.concurrentfunktioniert 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-nodefunktionieren nun ordnungsgemäß. -
Behoben: Mock-Objekte werden nun im VM-Kontext statt im Elternkontext erstellt.
-
Behoben:
.babelrcist nun Teil des Transform-Cache-Keys inbabel-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-nativewurde veraltet und leitet nun anreact-nativeweiter.
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.
