Jest para JavaScript (Node.js): guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é Jest e para que serve?

\n\n

Jest é 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\n

Jest é 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\n

Para 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
\n\n

Instalação do Jest

\n\n

Jest é instalado através do gerenciador de pacotes npm ou yarn. Para projetos Node.js, esta é a forma padrão.

\n\n
# Instalação como dependência de desenvolvimento (recomendado)\nnpm install --save-dev jest\n\n# Ou com yarn\nyarn add --dev jest\n
\n\n

Após a instalação, adicione um script para executar os testes no seu package.json:

\n\n
{\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\n

Agora você pode executar os testes com o comando npm test.

\n\n

Início rápido com exemplo de código

\n\n

Suponha que temos um módulo simples para operações matemáticas math.js:

\n\n
// 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\n

Vamos criar um arquivo de teste math.test.js (por padrão, Jest procura arquivos com extensão .test.js ou .spec.js):

\n\n
// 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\n

Execute os testes:

\n\n
npm test
\n\n

Você verá no console um relatório sobre a execução dos testes. Se tudo estiver correto, ambos os testes serão marcados com ✓ verde.

\n\n

Principais métodos e funções do Jest

\n\n

Jest fornece uma API rica. Vamos ver 10 métodos principais que cobrirão 90% das suas tarefas.

\n\n

1. test(name, fn, timeout) / it(name, fn, timeout)

\n

O que faz: Define um novo teste. test e it são sinônimos. Você pode usar qualquer um.

\n

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
\n

Exemplo:

\n
test('dois mais dois é igual a quatro', () => {\n  expect(2 + 2).toBe(4);\n});\n\nit('a string "hello" tem comprimento 5', () => {\n  expect('hello').                    

Recommendations