Jest en 2016
Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →
2016 a été une année charnière pour les tests JavaScript avec Jest. Durant les six premiers mois, nous avons entièrement réécrit Jest et bâti des bases solides pour considérablement améliorer les performances et l'expérience développeur lors des tests de code JavaScript. Nous avons typé l'intégralité du codebase avec Flow, développé une multitude de tests d'intégration pour Jest lui-même et adopté lerna pour transformer Jest d'un simple framework en une plateforme de tests JavaScript indolores.
Le tout nouveau react-test-renderer a enfin permis de tester des composants react-native. Grâce au preset jest-react-native (désormais intégré directement dans react-native), Jest fonctionne désormais immédiatement pour tout projet React et vient préconfiguré dans les projets create-react-app et react-native. Nous avons intégré des éléments clés de Jest dans le packager de react-native et la toute nouvelle fonctionnalité de snapshot testing a depuis été utilisée en dehors de Jest : elle a été intégrée à React Storybook sous le nom de « storyshots » et est adoptée par d'autres test runners comme ava.
Le projet pretty-format a été réécrit en privilégiant les performances pour alimenter la fonctionnalité de snapshot de Jest, a récemment été fusionné dans le monorepo de Jest et s'avère également utile dans d'autres test runners. Aujourd'hui, Jest consiste bien plus à rassembler différentes idées et solutions de test qu'à proposer une implémentation spécifique de framework de tests.
Je tiens à remercier chaleureusement toutes les personnes ayant contribué à Jest cette année, issues tant de la communauté open source que de Facebook : Dmitrii Abramov, Cristian Carlesso, Dan Abramov, Daniel Lo Nigro, Maxim Derbin, Evan Scott, Forbes Lindesay, Keyan Zhang et 60 autres contributeurs. Nous souhaitons également accueillir Michał Pierzchała (@thymikee) comme premier contributeur externe officiel de Jest. Il a fait un travail remarquable en gérant les issues et PRs du dépôt. Si vous souhaitez commencer à contribuer à Jest, nous proposons plusieurs tâches faciles pour débuter et nous serons toujours ravis de vous aider sur notre canal Discord.
repl.it avec intégration de Jest
Amjad Massad a créé un conteneur Jest vous permettant désormais d'essayer Jest directement dans le navigateur. Vous pouvez l'utiliser dès maintenant lors de la création d'issues GitHub, ce qui devrait accélérer la résolution des problèmes. Amjad et Haya développent repl.it pour démocratiser la programmation en créant des outils et plateformes puissants mais simples pour les enseignants, apprenants et développeurs. Ils recrutent également des ingénieurs talentueux !
Actualité de la communauté
Nous sommes extrêmement honorés que plus de 100 entreprises aient adopté Jest ces six derniers mois. Des sociétés comme Twitter, Pinterest, Paypal, nytimes, IBM (Watson), Spotify, eBay, SoundCloud, Intuit, FormidableLabs, Automattic, Trivago et Microsoft ont entièrement ou partiellement migré vers Jest pour leurs besoins de tests JavaScript. Un immense merci d'avoir donné sa chance à ce projet. Nous remercions également toutes les personnes ayant présenté Jest lors de conférences et meetups, ainsi que celles qui rédigent des articles de blog sur leur expérience avec Jest !
Voici ce qui s'est passé dans la communauté ces deux derniers mois :
-
Jason Bonta et Dmitrii Abramov ont redéfini la "pyramide des tests" dont nous parlons beaucoup chez Facebook.
-
jest-codemods permet désormais de migrer facilement de Mocha, Tape et Ava vers Jest.
-
L'équipe React a annoncé des améliorations du react-test-renderer dans la version 15.4.0.
-
Orta Therox a développé une superbe intégration vscode-jest et a contribué le code pour la prise en charge éditeur à Jest.
-
Pavithra Kodmad documente l'adoption de Jest chez Flipkart et partage des conseils pour bien démarrer.
-
Kent C. Dodds a écrit sur la migration vers Jest chez Paypal et Jason Brown a également écrit sur la migration vers Jest.
-
Ben McCormick a écrit sur gagner du temps avec Jest.
-
Eric Clemmons a écrit sur l'intégration des snapshots et de Storybook.
-
Edvin Erikson a écrit sur l'obtention du format Tap dans Jest.
-
jest-html permet d'intégrer les différences de snapshots dans votre navigateur.
-
Plusieurs excellentes discussions sur hackernews ont eu lieu à propos de Jest.
-
La communauté a lancé une grande discussion sur l'avenir d'enzyme.
-
Ruben Oostinga a écrit sur la combinaison des matchers de chai et Jest.
-
Emil Ong a expliqué pourquoi "Tester votre frontend avec TDD semble inutile".
-
Nate Hunzaker a écrit sur les tests end-to-end avec Jest et Nightmare.
-
Utiliser Jest avec Angular fonctionne parfaitement selon Matthieu Lux.
-
Une conversation passionnante sur l'objectif des snapshot tests est en cours actuellement.
-
Dmitrii a réalisé un nouveau clip avec son groupe de metal.
-
lazyspec peut vous aider à créer rapidement des smoke tests si vous introduisez des tests dans une base de code existante.
-
Patrick Stapfer a présenté un lightning talk sur vim et Jest.
-
Mark Dalgleish a commenté la valeur des tests par snapshot.
Nouvelles fonctionnalités, changements et corrections dans Jest 17 & 18
Jest a été créé il y a plus de cinq ans et en tant que framework ancien, il avait accumulé une dette technique. C'est pourquoi nous apportons des changements cassants plus fréquemment qu'il n'y paraît nécessaire : nous croyons qu'il est important de réduire progressivement la dette technique pour garantir la maintenabilité à long terme du projet Jest. Nous n'avons pas annoncé Jest 17 dans un article de blog, et si vous ne l'avez pas mis à jour ce dernier mois, le changelog pourrait vous être utile.
-
Cassant : Suppression de
pitau profit deitoutest, et demockImplau profit dejest.fn()oumockImplementation. -
Cassant :
--jsonOutputFilerenommé en--outputFile. -
Cassant : Mise à jour de
testRegexpour inclure les fichierstest.jsetspec.js. -
Cassant : Remplacement de
scriptPreprocessorpar la nouvelle optiontransform. -
Cassant : La fonction
testResultsProcessordoit désormais retourner les résultats modifiés. -
Potentiellement cassant : Résolution correcte de
snapshotSerializers,setupFiles,transform,testRunnerettestResultsProcessorvia un algorithme de résolution au lieu depath.resolve. Cela signifie principalement que<rootDir>n'est plus nécessaire pour ces options. -
Ajout : Intégration de
pretty-formatetjest-editor-supportdans Jest. -
Ajout :
expect.any,expect.anything,expect.objectContaining,expect.arrayContaining,expect.stringMatching. -
Ajout :
--testResultsProcessordésormais exposé via la CLI. -
Ajout : Implémentation du watch mode dans
jest-haste-map. -
Ajout : L'utilisation de Jest en mode watch peut être masquée via
JEST_HIDE_USAGE. -
Ajout :
expect.assertions(number)pour s'assurer qu'un nombre spécifié d'assertions est effectué dans un test. -
Ajout : Fonctionnalité
.toMatchSnapshot(?string)pour nommer les snapshots. -
Ajout : Matchers
toMatchObject,toHaveProperty,toHaveLength. -
Ajout :
expect.extend. -
Ajout : Prise en charge des serializers de snapshots personnalisés.
-
Ajout : Les diffs volumineux sont désormais réduits par défaut dans les snapshots et assertions. Ajout de
--expand(ou-e) pour afficher le diff complet. -
Ajout :
jest.resetAllMocksremplacejest.clearAllMocks. -
Ajout :
--jsoninclut désormais des informations sur les tests individuels dans un fichier. -
Corrigé : Rejets de promesses non gérés dans
test.concurrent. -
Corrigé :
babel-plugin-jest-hoistlors de l'utilisation dejest.mockavec trois arguments. -
Corrigé : Le global
JSONdansjest-environment-nodeprovient désormais du contexte vm au lieu du contexte parent. -
Corrigé : Jest n'affiche plus les stack traces de Babel.
-
Corrigé : Réinitialisation des faux timers lorsque
FakeTimers.useTimers()est appelé. -
Corrigé : Échappement correct des expressions régulières dans les snapshots.
-
Corrigé : Amélioration de l'affichage des grands objets.
-
Corrigé :
NaN% Faileddans les notifications système lors de l'utilisation de--notify. -
Corrigé : Le premier lancement de tests sans timings en cache utilisera désormais des processus séparés au lieu de s'exécuter dans le même processus.
-
Corrigé : Comparaisons de
Map/Set. -
Corrigé :
test.concurrentfonctionne désormais avec--testNamePattern. -
Corrigé : Amélioration du matcher
.toContain. -
Corrigé : Résolution correcte des modules avec extensions spécifiques à une plateforme sur react-native.
-
Corrigé : Les objets globaux natifs dans
jest-environment-nodefonctionnent désormais correctement. -
Corrigé : Création d'objets mock dans le contexte vm au lieu du contexte parent.
-
Corrigé :
.babelrcfait désormais partie de la clé de cache de transformation dansbabel-jest. -
Corrigé : Analyse des docblocks avec les modules haste.
-
Corrigé : Sortie avec le code approprié lorsque le seuil de couverture n'est pas atteint.
-
Corrigé : Jest efface désormais entièrement l'historique de défilement en mode watch.
-
Déprécié :
jest-react-nativeest déprécié et redirige désormais versreact-native.
Plans pour Jest au premier semestre 2017
Il y a six mois, nous partagions nos plans pour Jest et nous sommes heureux d'avoir pu les mettre en œuvre presque intégralement. Pour les six prochains mois, voici nos objectifs :
-
Retour instantané : Intégration avec Nuclide et amélioration du mode watch plus rapide.
-
Expérience développeur améliorée : nouvelles API de mocking et assertions optimisées.
-
Meilleures performances et utilisation mémoire : analyse de Jest et optimisation de l'efficacité.
-
Améliorations des snapshots : mode d'approbation des snapshots, coloration syntaxique et API améliorées pour
react-test-renderer. -
Site web : Refonte complète du site et de la documentation, avec ajout d'un aide-mémoire Jest.
Nous ne communiquerons pas de calendrier précis pour ces fonctionnalités et ne pourrons peut-être pas toutes les réaliser. Si vous souhaitez contribuer à concrétiser ces projets, proposez-nous vos idées via des issues et pull requests, et collaborons ensemble à l'amélioration de Jest en 2017.
