Neste artigo
Capa ilustrativa gerada por IA; não retrata clientes, parceiros ou atividades reais deste site.
Stub e mock podem substituir dependências em testes, mas atendem a perguntas diferentes. Escolher pela finalidade ajuda a controlar entradas e observar interações sem acrescentar expectativas que prendem o caso a detalhes irrelevantes da implementação.
Defina a pergunta antes do recurso
Descubra se você precisa controlar uma resposta ou verificar uma comunicação. Se a regra depende de receber uma lista vazia, fornecer essa resposta pode ser suficiente para exercitar o comportamento. Se o requisito envolve uma chamada com argumentos específicos, a interação também pode precisar de observação.
A documentação do PHPUnit apresenta stubs para respostas controladas e objetos mock com expectativas de chamada. Consulte as APIs da versão utilizada. Não escolha o mecanismo apenas porque um exemplo de outro projeto usou o mesmo nome de dependência.
Controle entradas relevantes
Um stub pode permitir preparar um retorno ou uma exceção necessária ao cenário, conforme o recurso disponível. Isso ajuda a alcançar um caminho sem depender de uma resposta variável de um serviço externo. Mantenha o comportamento substituto pequeno e ligado à pergunta do teste.
Considere um exemplo conceitual de uma consulta de catálogo. A regra precisa tratar ausência de itens. Uma resposta controlada permite conferir esse caso, mas não demonstra que o serviço real está disponível ou que o adaptador interpreta corretamente todos os formatos recebidos.
Observe interações com critério
Quando usar um mock, determine quais chamadas realmente fazem parte do contrato relevante. Exigir ordem e quantidade para toda operação interna pode tornar o teste sensível a mudanças que preservam o resultado esperado. A expectativa deve ter uma justificativa compreensível.
Por outro lado, verificar apenas um retorno pode deixar de fora uma comunicação exigida pela regra. O ponto é escolher a observação apropriada, sem adotar a proibição ou a obrigatoriedade de mocks como resposta universal para todos os cenários.
Registre limites da substituição
Identifique o contrato representado e os casos que o substituto não cobre. Se a dependência mudar, revise sua configuração e as verificações relacionadas. Um teste aprovado com uma representação antiga pode continuar passando enquanto já não responde à situação atual do projeto.
Mantenha casos de integração apropriados quando forem necessários para perguntas complementares. Um substituto útil permite uma avaliação controlada de parte do comportamento, com uma interpretação clara do resultado. Ele não deve ser apresentado como uma reprodução completa de qualquer sistema externo nem como garantia geral de qualidade da aplicação.
Continue a leitura
- Teste determinístico: controle tempo e dependências que mudam a resposta
- Preparar, executar e verificar: organize o raciocínio do caso de teste
- Data provider: varie casos sem esconder a intenção de cada entrada
Referências para consulta
Revisado em 3 de novembro de 2026. O DoubleIt é um blog editorial independente sobre programação. Não representa os projetos e ferramentas citados nem mantém continuidade com antigos responsáveis pelo domínio. As referências do PHPUnit indicam a documentação 13.4 consultada; confira requisitos e APIs da versão usada no seu projeto. Exemplos são conceituais e não descrevem testes executados pelo site em sistemas de clientes. Capas são ilustrações geradas, sem capturas reais de código.






