Pular para o conteudo principal

Mock Demais: Quando o Teste Para de te Proteger

Como perceber quando a suíte está isolando tanto que já não encosta mais no risco real do sistema.

Andrews Ribeiro

Andrews Ribeiro

Founder & Engineer

O problema

Mock resolve um problema real.

Ele:

  • acelera teste
  • isola dependência cara
  • ajuda a focar numa regra

Só que muita gente descobre esse poder e exagera.

Daqui a pouco o teste mocka:

  • banco
  • fila
  • cliente HTTP
  • cache
  • relógio
  • metade do serviço

E conclui que o sistema está protegido.

Nem sempre está.

Às vezes o teste virou um teatro bem organizado onde tudo coopera para passar.

Modelo mental

Pense assim:

mock serve para controlar fronteira. Quando ele substitui justamente a parte onde o risco mora, o teste perde honestidade.

O ponto não é “usar mock é errado”.

O ponto é:

  • o que estou isolando?
  • por que estou isolando?
  • o que deixei de validar ao fazer isso?

Sem essa pergunta, mock vira conforto falso.

Quebrando o problema

Mock é útil quando a dependência não é o foco

Se você quer testar:

  • cálculo
  • regra de negócio
  • decisão de estado

e a dependência externa só atrapalha o feedback, mock faz sentido.

Exemplo:

  • gateway de pagamento não é o foco do cálculo de desconto
  • relógio real não é o foco da regra de expiração

Nesse caso, isolar ajuda.

Mock começa a atrapalhar quando a costura é justamente o risco

Se o que pode quebrar é:

  • payload errado
  • integração mal encaixada
  • persistência não acontecendo
  • evento não sendo publicado

então mockar tudo isso tira o teste da zona onde o bug realmente mora.

O teste fica rápido.

Também fica cego.

Muito mock pode esconder acoplamento ruim

Esse é um sinal clássico:

  • para testar uma função simples você precisa montar dez mocks
  • cada refatoração quebra um monte de setup artificial
  • o teste parece mais difícil que o comportamento em si

Quando isso acontece, o problema pode não ser falta de teste.

Pode ser design ruim pedindo isolamento demais para conseguir respirar.

Teste verde não significa teste honesto

Esse ponto derruba muita confiança falsa.

Se o teste só passa porque:

  • o repositório mockado aceita qualquer coisa
  • o cliente HTTP mockado responde sempre perfeito
  • o publicador de evento mockado nunca falha

então boa parte do risco real foi empurrada para fora da suíte.

Suba de camada quando o mock começar a mentir

Às vezes o melhor ajuste não é “mais mock”.

É mudar a pergunta.

Em vez de:

  • testar serviço com tudo isolado

você passa para:

  • teste de integração com banco real de teste
  • teste de API com validação e persistência de verdade
  • teste de componente com rede controlada, mas fluxo real

Isso custa mais.

Mas compra honestidade onde o isolamento estava escondendo a falha.

Exemplo simples

Imagine um endpoint de criação de pedido.

Teste com mock demais:

  • mocka validação
  • mocka repositório
  • mocka cliente de estoque
  • mocka publicador de evento

O resultado:

  • o teste prova que uma sequência idealizada de chamadas aconteceu

Mas não prova se:

  • o pedido persistiu
  • o payload bate com o contrato
  • o evento foi publicado com formato correto

Um teste de integração bem escolhido, nesse caso, provavelmente protege mais do que cinco testes superisolados.

Erros comuns

  • Mockar justamente a integração que mais precisava ser validada.
  • Usar mock para fugir de ambiente de teste minimamente real.
  • Tratar qualquer dependência como se fosse detalhe irrelevante.
  • Medir valor da suíte pela velocidade e esquecer honestidade.
  • Achar que muito mock é sinal automático de maturidade em testes.

Como um senior pensa

Quem tem mais experiência costuma perguntar:

“O que este teste está deixando de tocar por causa do mock, e esse pedaço é justamente onde o bug costuma morar?”

Essa pergunta impede muito autoengano.

Senioridade aqui aparece quando a pessoa usa mock para focar, não para maquiar risco.

O que o entrevistador quer ver

Em entrevista, o avaliador quer ver se você entende trade-off, não se você ama ou odeia mock.

Você sobe de nível quando:

  • reconhece onde mock acelera sem mentir
  • percebe quando ele esconde integração real
  • fala de honestidade da suíte, não só de velocidade
  • sabe mover parte da confiança para integração quando necessário

Uma resposta forte costuma soar assim:

“Eu uso mock quando a dependência não é a pergunta central do teste. Mas se o risco está justamente na costura com banco, fila ou contrato externo, isolar demais pode me dar uma suíte verde que não me protege na prática.”

Mock demais não deixa o sistema mais seguro. Só deixa o teste mais confortável.

Quando a suíte passa porque o mundo falso cooperou, a confiança ficou barata demais.

Resumo rápido

O que vale manter na cabeça

Checklist de pratica

Use isto ao responder

Você concluiu este artigo

Próximo artigo Como Testar Código Legado Sem Precisar Reescrever Tudo Artigo anterior Flaky Tests: por que Acontecem e Como Reduzir

Continue explorando

Artigos relacionados