O que é Jest e para que serve?
\n\nJest é um framework de teste poderoso e popular para código JavaScript, desenvolvido pela empresa Facebook (Meta). Ele fornece tudo o que é necessário para escrever testes unitários, de integração e ponta a ponta "prontos para uso": ferramentas para criar asserções (assertions), mocks (mocking), espiões (spies), temporizadores, além de uma ferramenta integrada para medir a cobertura de código (code coverage).
\n\nJest é amplamente utilizado no ecossistema React, mas é perfeitamente adequado para testar qualquer código JavaScript, incluindo aplicações em Node.js, Angular, Vue.js e outros frameworks.
\n\nPara que serve o Jest?
\n- \n
- Automação de verificações: Permite verificar de forma rápida e confiável se o seu código funciona corretamente após cada alteração. \n
- Prevenção de regressões: Os testes ajudam a garantir que o novo código não quebrou funcionalidades antigas. \n
- Documentação: Testes bem escritos servem como documentação viva, mostrando como cada função ou módulo deve funcionar. \n
- Confiança em refatorações: A presença de testes permite reescrever e melhorar o código com segurança. \n
- Simplicidade de configuração: Jest funciona "pronto para uso" sem a necessidade de configuração complexa. \n
Instalação do Jest
\n\nJest é instalado através do gerenciador de pacotes npm ou yarn. Para projetos Node.js, esta é a forma padrão.
# Instalação como dependência de desenvolvimento (recomendado)\nnpm install --save-dev jest\n\n# Ou com yarn\nyarn add --dev jest\n\n\nApós a instalação, adicione um script para executar os testes no seu package.json:
{\n "scripts": {\n "test": "jest",\n "test:watch": "jest --watch", // Execução em modo de observação\n "test:coverage": "jest --coverage" // Execução com relatório de cobertura\n }\n}\n\n\nAgora você pode executar os testes com o comando npm test.
Início rápido com exemplo de código
\n\nSuponha que temos um módulo simples para operações matemáticas math.js:
// math.js\nfunction add(a, b) {\n return a + b;\n}\n\nfunction subtract(a, b) {\n return a - b;\n}\n\nmodule.exports = { add, subtract };\n\n\nVamos criar um arquivo de teste math.test.js (por padrão, Jest procura arquivos com extensão .test.js ou .spec.js):
// math.test.js\nconst { add, subtract } = require('./math');\n\ntest('adds 1 + 2 to equal 3', () => {\n expect(add(1, 2)).toBe(3);\n});\n\ntest('subtracts 5 - 3 to equal 2', () => {\n expect(subtract(5, 3)).toBe(2);\n});\n\n\nExecute os testes:
\n\nnpm test\n\nVocê verá no console um relatório sobre a execução dos testes. Se tudo estiver correto, ambos os testes serão marcados com ✓ verde.
Principais métodos e funções do Jest
\n\nJest fornece uma API rica. Vamos ver 10 métodos principais que cobrirão 90% das suas tarefas.
\n\n1. test(name, fn, timeout) / it(name, fn, timeout)
\nO que faz: Define um novo teste. test e it são sinônimos. Você pode usar qualquer um.
Parâmetros:
\n- \n
name(string) — nome do teste, que será exibido no relatório. \n fn(function) — função que contém a lógica do teste (asserções). \n timeout(number, opcional) — tempo de espera do teste em milissegundos (padrão é 5000). \n
Exemplo:
\ntest('dois mais dois é igual a quatro', () => {\n expect(2 + 2).toBe(4);\n});\n\nit('a string "hello" tem comprimento 5', () => {\n expect('hello').