Pular para o conteúdo
Tecnologia

TDD não é escrever testes depois. É design de código através de testes. Red-Green-Refactor melhora arquitetura e reduz bugs.

Conceitos Principais

Red-Green-Refactor

Red: escreva teste que falha. Green: código mínimo pra passar. Refactor: melhore sem mudar comportamento.

Baby Steps

Testes pequenos e incrementais. Não pule etapas. Commit após cada Green. Progresso mensurável.

Test First

Teste antes da implementação. Define interface antes de código. Força design limpo.

Refactor Seguro

Testes garantem comportamento. Refactor agressivo sem medo. Melhore continuamente.

Passo a Passo

  1. Red: Teste Falha: test("POST /users cria usuário", async () => { const res = await request(app).post("/users").send({name: "John"}); expect(res.status).toBe(201); });
  2. Green: Implementação Mínima: app.post("/users", (req, res) => res.status(201).json({id: 1, name: req.body.name})); Teste passa. Commit.
  3. Refactor: Melhore Código: Extrai controller, service, repository. Testes continuam passando. Arquitetura limpa emerge.
  4. Mock Database: jest.mock("./db"). Mock apenas I/O externo. Testa lógica isoladamente. Rápido e determinístico.
  5. Integration Tests: Test DB real em CI. Docker container. Seed data. Testa fluxo completo.

Boas Praticas

Recomendacoes

• Um assert por teste quando possível

• Testes rápidos (< 100ms cada)

• Mock apenas boundaries (DB, APIs)

• Commit após cada Green

• Refactor contínuo

Erros Comuns

Evite estes erros

• Pular etapa Red (implementar antes)

• Código complexo demais no Green

• Não refatorar (código apodrece)

• Mockar tudo (não testa integração)

• Testes lentos (> 1s)

Checklist

  • Ciclo Red-Green-Refactor funcionando
  • Testes unitários < 100ms
  • Mocks de DB configurados
  • Integration tests em CI
  • Coverage > 90%
  • Commits frequentes