devterview_$ iniciar simulação

Mock, stub e fake: qual é qual

MédioPlenoTest doubles

Pergunta

Qual a diferença entre um stub, um mock e um fake num teste?

Resposta esperada

Todos são 'test doubles' — substitutos de uma dependência real. Stub: devolve respostas pré-programadas pra alimentar o código sob teste (ex: um repositório que sempre retorna o mesmo usuário). Mock: um stub que também registra como foi chamado e o teste faz asserções sobre isso (ex: 'o serviço de e-mail foi chamado exatamente uma vez com esse endereço') — é verificação de interação. Fake: uma implementação de verdade, porém simplificada e imprópria pra produção (ex: um repositório em memória em vez do Postgres). Regra prática: prefira stubs e fakes; use mock só quando a interação em si é o comportamento que você quer garantir, senão o teste acopla à implementação.

Por que perguntam isso

A confusão entre mock e stub é quase universal. A resposta madura evita mock por padrão porque mock testa 'como' o código faz, não 'o quê' — e isso quebra a cada refatoração.

#mocks#stubs#test-doubles
publicidade

Perguntas de acompanhamento

Relacionadas