O Que É um Test Double?
Um test double é qualquer objeto que substitui uma dependência real durante o teste, para que o código sob teste possa ser exercitado isoladamente. A família inclui stubs (retornam valores prontos), mocks (fazem asserções sobre interações), fakes (implementações funcionais leves) e spies (registram chamadas). Eles removem de um teste dependências lentas, não determinísticas ou indisponíveis.
Por que isso importa
Dependências reais, bancos de dados, gateways de pagamento, APIs de terceiros, tornam os testes lentos, flaky ou impossíveis de rodar em CI. Test doubles as substituem por substitutos controláveis, para que os testes unitários permaneçam rápidos e determinísticos. O trade-off é que o excesso de mocking pode fazer os testes passarem enquanto a integração real está quebrada.
Conceitos relacionados
- Inclui stubs, mocks, fakes e spies
- Isola o código sob teste das dependências
- Excesso de mocking pode ocultar falhas reais de integração