{"id":232430,"date":"2023-01-12T14:12:00","date_gmt":"2023-01-12T11:12:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232430"},"modified":"2022-11-10T09:28:09","modified_gmt":"2022-11-10T06:28:09","slug":"come-nascondere-loutput-console-log-di-javascript-nei-test-jest","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/come-nascondere-loutput-console-log-di-javascript-nei-test-jest\/","title":{"rendered":"Come nascondere l&#8217;output console.log di JavaScript nei test Jest"},"content":{"rendered":"<p>Oggi stavo lavorando in una base di codice che aveva molti <code>console.log<\/code>output intenzionali in tutti gli ambienti tranne la produzione, quindi venivano visualizzati nell&#8217;output dei test Jest. Sarebbe stato noioso andare e rimuoverli uno per uno e quindi ho ideato questa semplice configurazione per sopprimere tutto <code>console.log<\/code>l&#8217;output in una volta mentre Jest \u00e8 in esecuzione.<\/p>\n<h2>Configurazione C&#8217;\u00e8<\/h2>\n<p>Questo trucco si basa sull&#8217;abilit\u00e0 nativa di Jest di deridere qualsiasi cosa. Quello che fondamentalmente faremo \u00e8 deridere il <code>log<\/code>metodo <code>console<\/code>dell&#8217;oggetto e lasciare intatti gli altri metodi.<\/p>\n<p>Dobbiamo prima dire a <a href=\"https:\/\/startfunction.com\/tag\/jest\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Jest<\/a> di eseguire un file di installazione prima che i test vengano eseguiti. Per fare ci\u00f2, modificheremo il <code>jest.config.js<\/code>file che di solito si trova alla radice del tuo progetto con altre propriet\u00e0 di configurazione e aggiungeremo la seguente riga:<\/p>\n<pre><code>setupFilesAfterEnv: ['\/src\/jest.setup.js']<\/code><\/pre>\n<p>Possiamo controllare nella <a href=\"https:\/\/jestjs.io\/docs\/configuration#setupfilesafterenv-array\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentazione di Jest<\/a> cosa <code>setupFilesAfterEnv<\/code>fa:<\/p>\n<blockquote>\n<p>Un elenco di percorsi per i moduli che eseguono del codice per configurare o impostare il framework di test prima dell&#8217;esecuzione di ogni file di test nella suite.<\/p>\n<\/blockquote>\n<p>Ora, quando eseguiamo i nostri test, eseguiranno prima <code>jest.setup.js<\/code>quello che creeremo ora.<\/p>\n<h2>Beffardo console.log<\/h2>\n<p>Crea un file in corrispondenza <code>src\/setup.js<\/code>o dove hai indicato il tuo percorso nel passaggio precedente. Quindi aggiungerai questo:<\/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>Questo \u00e8 ignorare il <code>log<\/code>metodo e consentire gli altri. Dal momento che volevo ancora avere la possibilit\u00e0 di produrre qualcosa nei test, ho mappato <code>debug<\/code>e <code>trace<\/code>. Puoi mappare altri di cui potresti aver bisogno <code>console.table<\/code>in questo modo rende gli elementi in una tabella, utili per registrare oggetti o array. Ad essere onesti, fino a quando non ho scritto questo, non avevo mai guardato la <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/console\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">pagina dell&#8217;oggetto della console in MDN<\/a> e ci sono molti metodi interessanti come il <code>console.dir<\/code>che mostra un elenco interattivo delle propriet\u00e0 dell&#8217;oggetto <a href=\"https:\/\/startfunction.com\/category\/javascript\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">JavaScript specificato.<\/a><\/p>\n<h2>Parole di chiusura<\/h2>\n<p>Ora il tuo <code>console.log<\/code>output viene soppresso durante l&#8217;esecuzione dei test Jest. Se lavori in un team, assicurati di informare il resto del team di questo cambiamento documentandolo poich\u00e9 qualcuno potrebbe essere stressato provando <code>console.log<\/code>qualcosa e non vedendolo dove dovrebbe essere.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/startfunction.com\" class=\"external external_icon\">startfunction.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Scopri come eliminare l&#8217;output delle chiamate console.log() indesiderate nei test 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":[896,731,751,1019,720],"tags":[1168],"class_list":["post-232430","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-javascript-6","category-open-source-projektmanagement-3","category-siti-utili","category-sviluppatore","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/232430","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=232430"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/232430\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/236170"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=232430"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=232430"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=232430"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}