🧪 TDD com React: Como Escrever Testes de Componentes com Confiança
✨ Introdução
Testar componentes React é mais fácil (e mais importante) do que parece.
Se você já pensou:
“Será que vale a pena testar botão e input?”
“Por onde começo com TDD no React?”
Você está no lugar certo.
Neste post você vai aprender:
- Como aplicar TDD na criação de componentes React
- Como usar React Testing Library e Jest
- Como escrever testes focados no comportamento, não no código
Vamos lá? 🚀
🔧 Pré-requisitos
- Projeto React criado com Vite, CRA ou Next.js
- Instalar as libs:
npm install --save-dev @testing-library/react @testing-library/jest-dom jest
Se estiver usando Vite:
npm install --save-dev vitest jsdom
E configure seu vite.config.js para incluir testes:
test: {
environment: 'jsdom',
},
🧠 O que testar em um componente React?
Não teste a implementação interna. Teste o comportamento visível para o usuário.
Exemplos práticos:
| Componente | O que testar |
|---|---|
| Botão | Se ele chama uma função ao clicar |
| Input | Se atualiza o valor corretamente |
| Formulário | Se envia os dados corretamente |
| Lista | Se renderiza os itens da API |
| Modal | Se aparece/fecha com base em ações |
📦 Exemplo Prático com TDD: Contador
1. Escrevendo o teste (RED)

2. Criar componente (GREEN)

✅ O teste agora passa.
3. Refatorar (REFACTOR)
- Extrair estilos
- Melhorar semântica
- Separar lógica em hook, se crescer
🛡️ Boas Práticas de TDD com React
| Prática | Por quê |
|---|---|
| Teste o que o usuário vê | Foca no comportamento, não na implementação |
Use screen.getByRole ou getByText | Mais semântico e resiliente |
| Evite testar componentes visuais puros | Teste lógica e interação |
| Mantenha os testes pequenos e descritivos | Um teste por cenário |
🧰 Ferramentas recomendadas
| Lib | Para quê |
|---|---|
@testing-library/react | Testar componentes de forma semântica |
@testing-library/user-event | Simular interações mais realistas |
jest-dom | Matchers úteis como toBeInTheDocument |
msw | Simular APIs externas em testes |
🔥 Bônus: Testando formulário com TDD
Imagine um formulário de login:

Esse teste define o comportamento esperado antes do código existir. Isso é TDD de verdade no frontend.
📣 Conclusão
Aplicar TDD no React:
- Deixa seu código mais confiável
- Te dá liberdade para refatorar sem medo
- Evita regressões (aquele bug que volta…)
Mesmo começando com componentes simples, você logo vai aplicar TDD em:
- Forms
- Integrações com APIs
- Fluxos complexos de UI
💡 Que tal testar o próximo componente do seu projeto usando esse modelo?