Aller au contenu principal

Jest 13.0 : Flow & REPL

· 4 min de lecture
Traduction Bêta Non Officielle

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 →

Nous sommes ravis d'annoncer aujourd'hui la prochaine version majeure de Jest. Nous avons apporté des changements significatifs qui bénéficieront à tous les utilisateurs ainsi qu'à l'infrastructure de tests JavaScript de Facebook. Plus important encore, nous avons ajouté des types statiques à l'intégralité du codebase de Jest lors d'un récent hackathon organisé chez Facebook. Quinze personnes ont travaillé jour et nuit pour intégrer les types Flow à Jest et développer de nouvelles fonctionnalités. Ces types statiques remplissent deux objectifs essentiels : Premièrement, nous pensons que le code est écrit pour être lu. La plupart du temps, le code n'est écrit qu'une seule fois mais relu par des dizaines de personnes pendant des années. L'ajout de types statiques documente le code et clarifie l'architecture de Jest. Deuxièmement, cela facilite la maintenance et nous permet de refactoriser des parties de Jest plus sereinement, sans crainte de régressions.

Le projet Flow a considérablement évolué chez Facebook et a été adopté avec succès dans de nombreux frameworks et presque tout notre code produit. Son adoption peut être parallélisée de façon remarquable – elle peut se faire fichier par fichier jusqu'à ce qu'une part suffisante du codebase soit correctement typée. Ensuite, Flow apporte une réelle valeur ajoutée et guide les refontes majeures. Grâce à cette approche, de nombreux cas limites et bugs subtils ont été détectés.

Avec l'aide de lerna, nous avons poursuivi la modularisation du projet Jest. Grâce à une simple mise à jour de configuration, Flow et lerna fonctionnent désormais parfaitement ensemble. La division de Jest en packages distincts nous a permis de repenser les frontières modulaires et de publier des packages autonomes utiles : Les outils CLI jest-runtime et jest-repl vous permettent désormais d'exécuter des scripts dans un environnement Jest sandboxé, facilitant le lancement et le débogage de votre application en ligne de commande. Ceci est particulièrement utile pour les projets utilisant la convention de modules @providesModule de Facebook. Pour commencer, installez simplement jest-repl et exécutez-le dans le dossier où vous lancez habituellement vos tests ! Nous avons également publié le package jest-changed-files qui identifie les fichiers modifiés dans les systèmes de contrôle de version git ou hg, une fonctionnalité courante dans les outils développeurs.

Nouvelles fonctionnalités et améliorations

  • Ajout d'un plugin de notification affichant une alerte à la fin des tests avec --notify.

  • Ajout de l'option browser dans la configuration pour résoudre correctement les packages npm avec un champ browser dans package.json, utile pour les tests d'applications côté client.

  • Amélioration du message "aucun test trouvé" qui indique désormais quels tests ont été détectés et comment ils ont été filtrés.

  • Ajout de jest.isMockFunction(jest.fn()) pour tester les fonctions mockées.

  • Amélioration de l'affichage du rapport de tests et ajout d'un récapitulatif des échecs lors de l'exécution de nombreux tests.

  • Ajout du support pour simuler des modules virtuels via jest.mock('Module', implementation, {virtual: true}).

  • Suppression du dossier .haste_cache. Jest utilise désormais l'emplacement temporaire par défaut du système d'exploitation.

  • Ajout de la durée d'exécution individuelle des tests en mode verbeux.

  • Ajout de la fonctionnalité d'enregistrement des snapshots dans Jest. Un article dédié à cette fonctionnalité sera publié prochainement.

Enfin, nous avons bénéficié d'une refonte complète du site web par Matthew Johnston et ajouté une documentation pour utiliser Jest avec webpack. Bon test avec Jest !