Comment masquer la sortie console.log de JavaScript dans les tests Jest
Je travaillais aujourd’hui dans une base de code qui avait de nombreuses console.log
sorties intentionnelles dans tous les environnements sauf la production, donc elles apparaissaient dans la sortie des tests Jest. Il aurait été fastidieux d’aller les supprimer un par un et j’ai donc conçu cette configuration simple pour supprimer toutes les console.log
sorties à la fois pendant que Jest est en cours d’exécution.
Configuration Il y a
Cette astuce repose sur la capacité native de Jest à se moquer de n’importe quoi. En gros, nous allons nous moquer de la log
méthode de l’ console
objet et laisser les autres méthodes intactes.
Nous devons d’abord dire à Jest d’exécuter un fichier de configuration avant que les tests ne soient exécutés. Pour ce faire, nous allons modifier le jest.config.js
fichier qui se trouve généralement à la racine de votre projet avec d’autres propriétés de configuration et ajouter la ligne suivante :
setupFilesAfterEnv: ['/src/jest.setup.js']
Nous pouvons vérifier dans la documentation de Jest ce que setupFilesAfterEnv
fait le :
Une liste des chemins d’accès aux modules qui exécutent du code pour configurer ou mettre en place le framework de test avant l’exécution de chaque fichier de test de la suite.
Maintenant, lorsque nous exécuterons nos tests, ils exécuteront d’abord le jest.setup.js
que nous allons créer maintenant.
Console.log moqueur
Créez un fichier à src/setup.js
ou partout où vous avez pointé votre chemin à l’étape précédente. Vous y ajouterez ensuite ceci :
global.console = {
log: jest.fn(),
debug: console.debug,
trace: console.trace,
}
Cela remplace la log
méthode et autorise les autres. Comme je voulais toujours avoir la possibilité de sortir quelque chose dans les tests, j’ai mappé debug
et trace
. Vous pouvez en mapper d’autres dont vous pourriez avoir besoin, comme console.table
cela rend les éléments dans une table, utile pour enregistrer des objets ou des tableaux. Pour être honnête, jusqu’à ce que j’écrive ceci, je n’avais jamais regardé la page de l’objet console dans MDN et il existe de nombreuses méthodes intéressantes comme celle console.dir
qui affiche une liste interactive des propriétés de l’ objet JavaScript spécifié .
Mots de clôture
Maintenant, votre console.log
sortie est supprimée pendant l’exécution de vos tests Jest. Si vous travaillez en équipe, assurez-vous d’informer le reste de l’équipe de ce changement en le documentant, car quelqu’un pourrait être stressé en essayant console.log
quelque chose et ne pas le voir où il devrait être.