{"id":232216,"date":"2023-01-12T14:56:00","date_gmt":"2023-01-12T11:56:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232216"},"modified":"2022-11-10T08:08:15","modified_gmt":"2022-11-10T05:08:15","slug":"comment-masquer-la-sortie-console-log-de-javascript-dans-les-tests-jest","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/comment-masquer-la-sortie-console-log-de-javascript-dans-les-tests-jest\/","title":{"rendered":"Comment masquer la sortie console.log de JavaScript dans les tests Jest"},"content":{"rendered":"<p>Je travaillais aujourd&rsquo;hui dans une base de code qui avait de nombreuses <code>console.log<\/code>sorties intentionnelles dans tous les environnements sauf la production, donc elles apparaissaient dans la sortie des tests Jest. Il aurait \u00e9t\u00e9 fastidieux d&rsquo;aller les supprimer un par un et j&rsquo;ai donc con\u00e7u cette configuration simple pour supprimer toutes les <code>console.log<\/code>sorties \u00e0 la fois pendant que Jest est en cours d&rsquo;ex\u00e9cution.<\/p>\n<h2>Configuration Il y a<\/h2>\n<p>Cette astuce repose sur la capacit\u00e9 native de Jest \u00e0 se moquer de n&rsquo;importe quoi. En gros, nous allons nous moquer de la <code>log<\/code>m\u00e9thode de l&rsquo; <code>console<\/code>objet et laisser les autres m\u00e9thodes intactes.<\/p>\n<p>Nous devons d&rsquo;abord dire \u00e0 <a href=\"https:\/\/startfunction.com\/tag\/jest\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Jest<\/a> d&rsquo;ex\u00e9cuter un fichier de configuration avant que les tests ne soient ex\u00e9cut\u00e9s. Pour ce faire, nous allons modifier le <code>jest.config.js<\/code>fichier qui se trouve g\u00e9n\u00e9ralement \u00e0 la racine de votre projet avec d&rsquo;autres propri\u00e9t\u00e9s de configuration et ajouter la ligne suivante\u00a0:<\/p>\n<pre><code>setupFilesAfterEnv: ['\/src\/jest.setup.js']<\/code><\/pre>\n<p>Nous pouvons v\u00e9rifier dans <a href=\"https:\/\/jestjs.io\/docs\/configuration#setupfilesafterenv-array\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">la documentation de Jest<\/a> ce que <code>setupFilesAfterEnv<\/code>fait le :<\/p>\n<blockquote>\n<p>Une liste des chemins d&rsquo;acc\u00e8s aux modules qui ex\u00e9cutent du code pour configurer ou mettre en place le framework de test avant l&rsquo;ex\u00e9cution de chaque fichier de test de la suite.<\/p>\n<\/blockquote>\n<p>Maintenant, lorsque nous ex\u00e9cuterons nos tests, ils ex\u00e9cuteront d&rsquo;abord le <code>jest.setup.js<\/code>que nous allons cr\u00e9er maintenant.<\/p>\n<h2>Console.log moqueur<\/h2>\n<p>Cr\u00e9ez un fichier \u00e0 <code>src\/setup.js<\/code>ou partout o\u00f9 vous avez point\u00e9 votre chemin \u00e0 l&rsquo;\u00e9tape pr\u00e9c\u00e9dente. Vous y ajouterez ensuite ceci\u00a0:<\/p>\n<pre><code>global.console = {\n    log: jest.fn(),\n    debug: console.debug,\n    trace: console.trace,\n\n}\n<\/code><\/pre>\n<p>Cela remplace la <code>log<\/code>m\u00e9thode et autorise les autres. Comme je voulais toujours avoir la possibilit\u00e9 de sortir quelque chose dans les tests, j&rsquo;ai mapp\u00e9 <code>debug<\/code>et <code>trace<\/code>. Vous pouvez en mapper d&rsquo;autres dont vous pourriez avoir besoin, comme <code>console.table<\/code>cela rend les \u00e9l\u00e9ments dans une table, utile pour enregistrer des objets ou des tableaux. Pour \u00eatre honn\u00eate, jusqu&rsquo;\u00e0 ce que j&rsquo;\u00e9crive ceci, je n&rsquo;avais jamais regard\u00e9 la <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/console\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">page de l&rsquo;objet console dans MDN<\/a> et il existe de nombreuses m\u00e9thodes int\u00e9ressantes comme celle <code>console.dir<\/code>qui affiche une liste interactive des propri\u00e9t\u00e9s de l&rsquo; objet <a href=\"https:\/\/startfunction.com\/category\/javascript\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">JavaScript<\/a> sp\u00e9cifi\u00e9 .<\/p>\n<h2>Mots de cl\u00f4ture<\/h2>\n<p>Maintenant, votre <code>console.log<\/code>sortie est supprim\u00e9e pendant l&rsquo;ex\u00e9cution de vos tests Jest. Si vous travaillez en \u00e9quipe, assurez-vous d&rsquo;informer le reste de l&rsquo;\u00e9quipe de ce changement en le documentant, car quelqu&rsquo;un pourrait \u00eatre stress\u00e9 en essayant <code>console.log<\/code>quelque chose et ne pas le voir o\u00f9 il devrait \u00eatre.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/startfunction.com\" class=\"external external_icon\">startfunction.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apprenez \u00e0 supprimer la sortie des appels console.log() ind\u00e9sirables dans vos tests Jest.<\/p>\n","protected":false},"author":1,"featured_media":236170,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[893,717,728,748,1016],"tags":[1167],"class_list":["post-232216","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-javascript-3","category-open-source-projektmanagement-2","category-sites-utiles","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/232216","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=232216"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/232216\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/236170"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=232216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=232216"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=232216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}