{"id":232300,"date":"2023-01-12T14:48:00","date_gmt":"2023-01-12T11:48:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232300"},"modified":"2022-11-10T08:34:45","modified_gmt":"2022-11-10T05:34:45","slug":"como-ocultar-a-saida-console-log-do-javascript-em-testes-jest","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/como-ocultar-a-saida-console-log-do-javascript-em-testes-jest\/","title":{"rendered":"Como ocultar a sa\u00edda console.log do JavaScript em testes Jest"},"content":{"rendered":"<p>Eu estava trabalhando hoje em uma base de c\u00f3digo que tinha muitas <code>console.log<\/code>sa\u00eddas intencionais em todos os ambientes, exceto produ\u00e7\u00e3o, ent\u00e3o eles estavam aparecendo na sa\u00edda dos testes do Jest. Teria sido tedioso ir e remov\u00ea-los um por um, ent\u00e3o criei essa configura\u00e7\u00e3o simples para suprimir toda <code>console.log<\/code>a sa\u00edda de uma s\u00f3 vez enquanto o Jest estiver em execu\u00e7\u00e3o.<\/p>\n<h2>Configurando Existe<\/h2>\n<p>Esse truque depende da capacidade nativa de Jest de zombar de qualquer coisa. O que basicamente faremos \u00e9 zombar do <code>log<\/code>m\u00e9todo do <code>console<\/code>objeto e deixar os outros m\u00e9todos intactos.<\/p>\n<p>Primeiro precisamos dizer ao <a href=\"https:\/\/startfunction.com\/tag\/jest\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Jest<\/a> para executar um arquivo de configura\u00e7\u00e3o antes que os testes sejam executados. Para fazer isso, editaremos o <code>jest.config.js<\/code>arquivo que geralmente est\u00e1 na raiz do seu projeto com outras propriedades de configura\u00e7\u00e3o e adicionaremos a seguinte linha:<\/p>\n<pre><code>setupFilesAfterEnv: ['\/src\/jest.setup.js']<\/code><\/pre>\n<p>Podemos verificar na <a href=\"https:\/\/jestjs.io\/docs\/configuration#setupfilesafterenv-array\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documenta\u00e7\u00e3o do Jest o<\/a> que o <code>setupFilesAfterEnv<\/code>faz:<\/p>\n<blockquote>\n<p>Uma lista de caminhos para m\u00f3dulos que executam algum c\u00f3digo para configurar ou configurar a estrutura de teste antes que cada arquivo de teste no conjunto seja executado.<\/p>\n<\/blockquote>\n<p>Agora, quando executarmos nossos testes, eles executar\u00e3o primeiro o <code>jest.setup.js<\/code>que vamos criar agora.<\/p>\n<h2>Simulando console.log<\/h2>\n<p>Crie um arquivo em <code>src\/setup.js<\/code>ou onde voc\u00ea apontou seu caminho na etapa anterior. Em seguida, voc\u00ea adicionar\u00e1 isso a ele:<\/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>Isso est\u00e1 substituindo o <code>log<\/code>m\u00e9todo e permitindo os outros. Como eu ainda queria ter a capacidade de produzir algo nos testes, mapeei <code>debug<\/code>e <code>trace<\/code>. Voc\u00ea pode mapear outros que voc\u00ea possa precisar, como <code>console.table<\/code>elementos de renderiza\u00e7\u00e3o em uma tabela, \u00fateis para registrar objetos ou matrizes. Para ser honesto, at\u00e9 escrever isso, eu nunca tinha visto a <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/console\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">p\u00e1gina do objeto do console no MDN<\/a> e existem muitos m\u00e9todos interessantes como o <code>console.dir<\/code>que exibe uma lista interativa das propriedades do objeto <a href=\"https:\/\/startfunction.com\/category\/javascript\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">JavaScript especificado.<\/a><\/p>\n<h2>Palavras de encerramento<\/h2>\n<p>Agora sua <code>console.log<\/code>sa\u00edda \u00e9 suprimida enquanto seus testes Jest s\u00e3o executados. Se voc\u00ea trabalha em equipe, certifique-se de informar o restante da equipe sobre essa mudan\u00e7a documentando-a, pois algu\u00e9m pode ficar estressado tentando <code>console.log<\/code>algo e n\u00e3o vendo onde deveria estar.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/startfunction.com\" class=\"external external_icon\">startfunction.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Saiba como suprimir a sa\u00edda de chamadas console.log() indesejadas em seus testes 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":[898,753,722,733,1021],"tags":[1170],"class_list":["post-232300","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-2","category-codigo-aberto","category-desenvolvedor","category-javascript-8","category-sites-uteis","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/232300","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=232300"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/232300\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/236170"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=232300"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=232300"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=232300"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}