🎭 3.14 Dublês de Teste: Mocks, Stubs, Spies e Fakes

Na literatura de engenharia de software (especialmente em xUnit Test Patterns de Gerard Meszaros), o termo genérico para objetos de simulação é Test Double (Dublê de Teste). No dia a dia, chamamos tudo de “Mock”, mas entender as nuances técnicas te torna um arquiteto melhor.

🏗️ A Taxonomia dos Dublês

TipoDefinição de EngenhariaExemplo de Uso
DummyObjetos passados mas nunca usados (preencher parâmetros).Um Usuario vazio em um construtor de Log.
FakeImplementação real funcional, mas simplificada.H2 In-Memory em vez de Oracle local.
StubFornece respostas prontas (hardcoded) para chamadas no teste.when(dao.list()).thenReturn(lista).
MockFocado em verificar interações e comportamento.verify(email).envia().
SpyWrapper sobre objeto real que registra interações.Observar se um log foi gerado por uma classe de cálculo real.

🛡️ Quando usar cada um?

  1. Use Stubs para fornecer dados ao código que você está testando (Injetar cenários).
  2. Use Mocks para garantir que comandos foram disparados (Efeitos colaterais).
  3. Use Fakes quando a lógica do dublê for complexa demais para um Mockito (ex: simulador de sistema de arquivos).

Terminologia Pragmática ⚙️

Embora os nomes variem, o framework Mockito é tão versátil que ele pode atuar como Mock, Stub, Spy e até prover suporte para Fakes. O foco não deve estar no nome, mas na Garantia de Comportamento. 🚀


Leitura Recomendada ⚡

Para aprofundar, pesquise pelo artigo clássico de Martin Fowler: “Mocks Aren’t Stubs”. Ele define a fundação do pensamento de isolamento que usamos hoje. 🏁


⬅️ Capítulo Anterior | Próximo Capítulo ➡️