O que é um mock
Mock é um substituto controlado usado para verificar como o código interage com uma dependência durante um teste. Ele permite preparar respostas e conferir chamadas, sem exigir que aquela dependência real participe do cenário.
O termo também aparece de forma mais ampla nas ferramentas, cobrindo diferentes tipos de simulação. Por isso, observe o que o teste faz: devolver uma resposta fixa e verificar uma interação são operações diferentes, mesmo quando usam a mesma biblioteca.
Controlar respostas e conferir chamadas
Um stub fornece respostas preparadas para o cenário. Na classificação mais estrita, um mock acrescenta expectativas sobre interações, como a chamada que deve ocorrer e os argumentos que ela deve receber.
Os nomes das APIs nem sempre seguem essa separação. Ao ler um teste, identifique qual função foi substituída, o retorno configurado e a verificação executada ao final para entender o alcance da simulação.
A simulação precisa representar o contrato
Uma resposta preparada pode esconder uma incompatibilidade se usa campos ou tipos diferentes dos retornados pelo serviço. Quando o contrato muda, revise a simulação junto com o código que interpreta o retorno.
Prepare também os resultados que alteram o caminho da aplicação, como uma recusa documentada. Repetir apenas o sucesso deixa sem verificação o tratamento que deveria acontecer quando o serviço recusa o envio.
Evitar interferência entre cenários
Chamadas registradas e implementações substituídas podem permanecer disponíveis para o teste seguinte, conforme a ferramenta e a configuração. Limpar o histórico, redefinir o comportamento e restaurar a função original têm finalidades distintas.
Um spy também pode observar a função sem impedir sua execução real. Confira esse comportamento antes de usá-lo numa operação de envio, pois registrar a chamada não significa interceptar seu efeito externo.
Relacionar o teste ao que ele comprova
Uma expectativa atendida confirma a interação verificada naquele cenário. Ela não comprova que o provedor recebeu a solicitação ou que entregou a mensagem, e deve ser complementada conforme o alcance necessário do teste de integração.
Para revisar um teste que passa enquanto a integração falha, o Desenvolvimento Colaborativo da Dev Side Studio oferece orientação ao vivo para investigar o código e suas simulações. A sessão permite comparar o retorno preparado com o comportamento que a aplicação precisa tratar.
Dúvidas frequentes
Perguntas frequentes sobre Mock
- Mock e stub são a mesma coisa?
- No uso cotidiano, mock pode nomear vários substitutos de teste. Na distinção mais estrita, o stub fornece respostas preparadas e o mock verifica expectativas sobre interações.
- Um teste com mock confirma a entrega de um email?
- Não. Ele pode confirmar que a aplicação solicitou o envio conforme o cenário. A entrega pelo serviço real exige outra verificação.
- Espionar uma função impede sua execução real?
- Não necessariamente. Algumas ferramentas mantêm a implementação original ao criar um spy. Confira a configuração antes de executar um teste que possa produzir efeitos externos.
- É necessário simular toda dependência?
- Não. Escolha os substitutos conforme o comportamento que deseja verificar e as dependências difíceis de controlar. Simular detalhes internos em excesso pode tornar o teste sensível a reorganizações sem mudança funcional.
Para continuar
Recursos relacionados
Documentação
Vitest: mocking
Criação de substitutos e tratamento do estado entre testes.
Abrir recursoDocumentação
Martin Fowler: mocks e stubs
Distinções entre dublês e formas de verificar o comportamento.
Abrir recursoAplicação na formação
Vibe Coding: Do Zero ao MVP
Um mock permite controlar uma dependência e conferir as interações realizadas pela aplicação durante um teste.
Conhecer a formação
Fontes consultadas
Referências deste verbete
Este verbete ajudou você?
Obrigado pela resposta. Ela fica salva apenas neste navegador.