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
- Martin Fowler, The Practical Test Pyramid
- Kent C. Dodds, The Testing Trophy
- Testing Library: Guiding Principles
- Google Testing Blog: Don't mock types you don't own
- Kent Beck, Test-Driven Development: By Example
- fast-check