Eu ainda escrevo testes

Douglas Pereira

Não uma catedral de mock. Não 90% de cobertura como religião. Alguns testes que quebram quando a coisa que me importa quebra.

Pirâmide, troféu, tanto faz — pega o bug caro

A pirâmide de testes do Fowler ainda explica custo: muitos unitários rápidos, menos integrados, poucos e2e. O testing trophy do Kent C. Dodds desloca peso para integração com Testing Library porque o usuário não clica em mock.

Eu escrevo o teste que eu queria às 23h: com esta entrada, o usuário vê isto, a gente não cobra duas vezes, o outro tenant não está no JSON.

test('não cobra duas vezes no retry', async () => {
  await charge(invoice)
  await charge(invoice)
  expect(await payments.count(invoice.id)).toBe(1)
})

O agente afirma de boa que o mock devolveu o mock. Esse teste é um elogio ao mock. Don't mock what you don't own ainda vale.

Determinismo ou apaga

Tempo, rede, aleatoriedade: injeta. Flake treina o time a ignorar vermelho. Se a suíte está lenta, eu apago teste, não apago a suíte. Uma suíte pequena e maldosa ganha de museu.

Property test (fast-check, Hypothesis) quando o invariante é algébrico (parse/print, ordem irrelevante). Uma property pode trocar um punhado de exemplos — não o contrário.

Referências