Felipe Moacir

Testando React: Durma tranquilo à noite

TestingJestReact
Testando React: Durma tranquilo à noite

"Não tenho tempo para escrever testes". A frase mais cara da programação. O tempo que você economiza não escrevendo testes, você gasta em triplo corrigindo bugs em produção no sábado à noite.

A Filosofia RTL (React Testing Library)

Antigamente, testávamos detalhes de implementação ("O estado X mudou para Y?"). A RTL mudou isso para Behavior Driven: "O usuário clicou no botão e viu a mensagem de sucesso?".

Se o usuário não vê o estado interno, seu teste não deveria se importar com ele.

// Teste bom
test('mostra mensagem de sucesso ao enviar', () => {
  render(<ContactForm />)
  fireEvent.click(screen.getByText('Enviar'))
  expect(screen.getByText('Mensagem enviada!')).toBeInTheDocument()
})

Pirâmide de Testes

  1. Unitários (Jest): Testam funções isoladas e lógica de negócio pura (utils, hooks). Rápidos e baratos.
  2. Integração (RTL): Testam componentes conversando entre si. Onde você deve gastar 70% do tempo.
  3. End-to-End (Playwright/Cypress): Testam o fluxo completo (Login -> Compra -> Email). Lentos e caros, use para fluxos críticos.

Mocks com Moderação

Mocke dependências externas (API, banco), mas evite mockar tudo. Testes que mockam cada componente viram "testes do mock", não do comportamento real. Prefira integration tests com dados reais (ou MSW para APIs) quando possível.

Coverage é Métrica, não Meta

80% de coverage não garante qualidade se os testes forem superficiais. Um fluxo crítico com 5 testes bons vale mais que 50 testes que só passam por cima. Foque em cenários de sucesso, erro e edge cases das features que importam.

Setup Mínimo

Jest + React Testing Library + jest-environment-jsdom cobrem a maior parte dos casos. Para E2E, Playwright ou Cypress. Configure uma vez e mantenha; não perca tempo trocando de ferramenta a cada projeto.

Testes e Refatoração

A principal vantagem de ter testes é a confiança para refatorar. Código legado sem testes é uma armadilha: ninguém ousa mexer. Adicione testes nas partes que você precisa modificar primeiro, mesmo que a cobertura geral seja baixa no início.

Testar não é burocracia. É a rede de segurança que permite refatorar código legado sem medo de quebrar tudo.