Skip to main content

6 etapas para refatorar um caso de teste do Jest

Escrito por

4 de setembro de 2019

0 minutos de leitura

Um recurso pouco conhecido do Jest é a possibilidade de personalizar como os erros de asserção exibidos no console são tratados quando os testes falham. Imagine o seguinte código de teste, que precisa percorrer um objeto programaticamente para garantir que as chaves existam como esperado (usando a função expect):

Editor de código escuro exibindo um teste do Jest que verifica se os arquivos JavaScript têm classes de aplicação correspondentes.

O teste está bem escrito. Agora, imagine o que acontece se alguém da equipe fizer algumas alterações no código: adicionar um novo arquivo em uma parte e esquecer de incluí-lo em outra parte importante do mesmo projeto, como garantir que ele seja exportado corretamente.

Na próxima vez que o teste for executado, ele vai falhar. No entanto, o motivo não será óbvio para a maioria das pessoas; e, se você não conhece o código, provavelmente nem vai saber o que deu errado. Experimente:

Editor de código escuro exibindo uma falha em um teste Jest: validators devem ser exportados, com Received: undefined e um erro de asserção na linha 13.

Por isso, o Jest também exige o uso de toHaveProperty() com expect, assim:

Editor de código com tema escuro exibindo um código JavaScript que extrai o nome de uma classe de cada nome de arquivo e testa a propriedade esperada.

Agora, quando um teste falha, fica pelo menos mais claro qual propriedade está faltando. No entanto, ainda é um pouco enigmático, como você pode ver na próxima captura de tela. O que podemos fazer? ?

Editor de código com tema escuro mostrando uma falha em um teste do Jest: todas as classes validadoras devem ser exportadas de index.js.

Neste ponto, as anotações que já estão lá talvez sejam suficientes. O nome do teste é autoexplicativo, como você pode ver. Mas temos apenas um caso de teste que falha e, ao analisar o rastreamento do teste, não conseguimos avaliar com clareza quais validadores foram usados.

Vamos refatorar o código:

Editor de código com tema escuro exibindo testes do Jest que verificam se as classes validadoras são exportadas por index.js

Agora, quando meu teste passa ou falha, fica muito mais claro e intuitivo entender exatamente o que foi testado, o que falhou e por quê:

Saída do terminal mostrando testes Jest aprovados para validadores em app.test.js, incluindo ValidateHost.js e ValidateHttps.js.

Muito melhor! ???


Se você gosta do Jest tanto quanto eu (?), talvez também tenha interesse em ler alguns dos meus outros artigos sobre Jest:

Se você também se interessa por segurança na web, adoraria encontrar você na comunidade do Slack do The Secure Developer ou no Twitter, se preferir.

Publicado em: