Exécuteur de tests Node.js
- Node.js inclut désormais un exécuteur de tests par défaut
- Vous pouvez écrire des tests en important le module
node:test dans les fichiers de test
- Exécution d’un seul test :
node --test tests/math.test.js
- Détecte automatiquement les fichiers de test et les exécute
- Vous pouvez vérifier les tests avec le module
assert fourni par défaut
- Vous pouvez regrouper et gérer des tests liés à l’aide de suites de tests et de hooks
Mocking natif de Node.js
- Node.js inclut désormais une fonctionnalité de mocking native
- Les fonctions de mocking proposées par d’autres frameworks de test peuvent être utilisées directement dans Node.js
- Vous pouvez implémenter le mocking avec la méthode
mock du module node:test
Couverture de tests native de Node.js
- La couverture de tests aide à comprendre quelle partie du code source est testée
- Depuis Node.js 20, une fonctionnalité native de couverture de tests est disponible
- Vous pouvez générer des données de couverture avec le flag
--experimental-coverage
- Le rapport de couverture permet d’identifier les zones de code non testées
Mode watch de Node.js
- Le mode watch détecte les changements de fichiers en temps réel et relance automatiquement les scripts
- Aucune dépendance externe comme Nodemon n’est nécessaire
- Vous pouvez détecter les changements de fichiers et exécuter automatiquement les scripts avec le flag
--watch
Corepack de Node.js
- Corepack sert de pont entre le projet et le gestionnaire de paquets
- Vous indiquez le gestionnaire de paquets à utiliser dans le projet, et Corepack le gère automatiquement
- Vous pouvez activer Corepack avec la commande
corepack enable
Chargeur .env de Node.js
- Depuis Node.js 20, il est possible de charger nativement des variables d’environnement depuis des fichiers .env
- Vous pouvez charger un fichier .env avec le flag
--env-file
- Vous pouvez charger plusieurs fichiers .env pour différentes configurations d’environnement
Prise en charge de import.meta dans Node.js
- Node.js v20.11.0 et v21.2.0 prennent en charge
import.meta.filename et import.meta.dirname
- Il devient plus simple de récupérer le chemin du fichier et le nom du répertoire
Promesses natives pour les timers dans Node.js
- Depuis Node.js v15, les timers peuvent être utilisés sous forme de promesses
setTimeout et setInterval peuvent être utilisés comme promesses pour écrire un code asynchrone plus concis
Module de permissions de Node.js
- Fonctionnalité expérimentale permettant de contrôler l’accès aux ressources d’une application Node.js
- Le flag
--experimental-permission permet de restreindre l’accès au système de fichiers, au réseau, aux variables d’environnement, etc.
Module de policy de Node.js
- Fonctionnalité de sécurité qui empêche le chargement de code malveillant
- Le flag
--experimental-policy permet de spécifier un fichier de policy et de contrôler le chargement des modules
7 commentaires
Il n’y a pas de mention de
node --run. Depuis les versions récentes, il est possible d’exécuter des scripts sans dépendre de NPM. Le démarrage est des dizaines de fois plus rapide.Cette fois, en travaillant sur le projet tsboard, j’ai pas mal comparé avec le runtime Bun sous différents angles, et même si Node.js est vraiment excellent à bien des égards, il reste encore deux points frustrants : (1) l’absence de prise en charge de TypeScript, (2) la vitesse. En revanche, je trouve vraiment impressionnants des aspects comme la compatibilité ou le fait qu’il ne soit pas particulièrement exigeant en matière de ressources matérielles.
Si vous tenez compte de TypeScript, des performances d’exécution, etc., pensez aussi à envisager le runtime Bun... !
Waouh ~ l’article original mentionne aussi Jest.
J’ai essayé de passer de jest à node.js sur un petit projet, mais le support des fonctions de validation est vraiment trop limité, donc ce n’est pas terrible :(
Ils adoptent les dernières tendances à une vitesse incroyable..
Et le mocking natif !