Jest é o framework de testes mais popular do ecossistema JavaScript. Setup zero-config, mocking poderoso e cobertura integrada.
Conceitos Principais
Test Runners
Jest encontra arquivos *.test.js automaticamente. Roda testes em paralelo. Watch mode re-roda apenas alterados. CLI poderosa.
Matchers
expect(value).toBe(expected). toEqual para objetos. toContain para arrays. toThrow para exceções. Custom matchers.
Mocks
jest.fn() cria function mock. jest.mock() mocka módulo inteiro. Spy de funções. Timer mocks para async.
Coverage
Istanbul integrado. --coverage flag. Relatórios HTML. Thresholds configuráveis. CI/CD integration.
Passo a Passo
- Setup Jest: npm install --save-dev jest. package.json: "test": "jest". Zero config para projetos simples. TypeScript: adicione ts-jest.
- Primeiro Teste: sum.test.js: test("soma 1 + 2", () => expect(sum(1, 2)).toBe(3)). Rode: npm test. Watch: npm test -- --watch.
- Mock Functions: const mockFn = jest.fn(() => 42). expect(mockFn).toHaveBeenCalled(). mockReturnValue, mockResolvedValue para async.
- Coverage Report: jest --coverage. Veja coverage/ dir. HTML report em coverage/lcov-report/index.html. Configure thresholds em jest.config.js.
- Setup Avançado: jest.config.js: testEnvironment "jsdom" para browser. setupFilesAfterEnv para globals. moduleNameMapper para aliases.
Boas Praticas
Recomendacoes
• Descreva comportamento, não implementação
• Um assert por teste quando possível
• Use beforeEach para setup limpo
• Mock apenas dependências externas
• Coverage > 80% para código crítico
Erros Comuns
Evite estes erros
• Testar implementação ao invés de comportamento
• Testes dependentes uns dos outros
• Mockar tudo (testa mocks, não código)
• Ignorar testes falhando
Checklist
- Jest instalado e configurado
- Primeiro teste passando
- Coverage acima de 80%
- Mocks configurados corretamente
- CI/CD rodando testes