Definição
Mock é um substituto controlado de uma dependência usado em testes. No lugar de chamar um serviço, um banco ou uma API real, o teste usa um objeto que devolve respostas definidas pelo cenário. Assim a verificação fica isolada do comportamento externo.
Simular respostas e verificar interações
Um mock pode fazer duas coisas. Ele devolve respostas preparadas para que o código em teste siga o fluxo esperado. E registra como foi chamado, o que permite verificar se a aplicação solicitou a operação certa com os argumentos certos.
const enviar = vi.fn().mockResolvedValue({ ok: true })
await cadastrarContato({ email: 'ana@exemplo.com' }, { enviar })
expect(enviar).toHaveBeenCalledWith({ para: 'ana@exemplo.com' })O limite do mock
O mock não comprova que o serviço real funciona. Uma simulação divergente do contrato verdadeiro pode esconder falhas de integração e dar a impressão de que o fluxo está correto. O teste com mock e o teste contra o serviço real respondem a perguntas diferentes.
Quando o mock esconde o problema
No exemplo do envio de email, o mock devolve sucesso e o teste verifica a chamada. A falha provável surge quando a resposta simulada não corresponde ao contrato real do serviço, como um formato de erro diferente do que a aplicação trata. O teste passa com o mock e a produção quebra no primeiro retorno inesperado. A verificação mantém um teste de integração contra o serviço real, alinha a forma da resposta simulada com a resposta documentada e revisa as chamadas registradas pelo mock para conferir argumentos e caminhos percorridos.
Veja o teste focado em uma unidade: o teste unitárioDúvidas frequentes
Perguntas frequentes sobre Mock
- O que um mock faz em um teste?
- Ele substitui uma dependência por um objeto controlado que devolve respostas preparadas e registra como foi chamado.
- O mock comprova que o serviço real funciona?
- Não. Ele verifica o comportamento da aplicação. O serviço real precisa de testes próprios e de integração.
- Quando usar mock?
- Quando o teste precisa isolar a unidade de um serviço externo, de um banco ou de uma API, sem depender do ambiente real.
Para continuar
Recursos relacionados
Documentação
Vitest: Mocking
Mostra como criar mocks, espionar chamadas e simular funções no Vitest.
Abrir recursoArtigo
Martin Fowler: Mocks Aren't Stubs
Distingue mocks de outros dublês de teste e explica quando cada um faz sentido.
Abrir recursoAplicação na formação
Vibe Coding: Do Zero ao MVP
Na Formação Vibe Coding, o mock permite testar o comportamento da aplicação sem depender de um serviço externo e verificar como a aplicação conversa com ele.
Conhecer a formaçãoFontes consultadas
Referências deste verbete
Este verbete ajudou você?
Obrigado pela resposta. Ela fica salva apenas neste navegador.