Teste contra um banco de dados real num contêiner em vez de mockar a camada de dados, porque a maioria dos bugs vive em queries, migrações e transações que um mock não consegue expressar. Para APIs externas, mocke na fronteira de transporte com respostas HTTP gravadas ou simuladas para que o seu próprio código de cliente seja exercitado, e adicione um pequeno conjunto de testes de contrato contra o serviço real para pegar desvios. Mantenha os testes isolados com transações por teste ou schemas novos.
Por que os entrevistadores perguntam isso
O entrevistador quer saber se os seus testes realmente pegariam uma regressão. Mockar a camada de repositório produz suítes que passam enquanto a produção quebra, então ele presta atenção a teste com banco real, stubs HTTP no nível da fronteira e um plano para detectar quando um terceiro muda algo. Velocidade e isolamento também importam, já que uma suíte lenta ou instável é pulada por mais completa que seja.
Como estruturar sua resposta
- Enuncie o princípio: mocke na fronteira do processo, não dentro do seu próprio código.
- Use um banco real num contêiner e explique o isolamento entre testes.
- Trate APIs de terceiros com transporte simulado mais checagens de contrato.
- Trate velocidade e instabilidade para que as pessoas continuem rodando a suíte.
Exemplo de resposta
Minha regra é mockar na borda do meu processo e não dentro dele. Então o banco é real, rodando num contêiner com o mesmo engine e a mesma versão da produção, e as migrações são aplicadas no início da execução, o que significa que a própria migração é testada toda vez. Cada teste roda numa transação que sofre rollback, ou ganha o próprio schema quando precisa comitar, então os testes ficam isolados e podem rodar em paralelo. Mockar o repositório me daria testes verdes que não provam nada, já que os bugs que eu de fato mando para produção estão em queries, constraints e fronteiras de transação. Para uma API externa eu faço stub na camada HTTP com respostas gravadas, então meu cliente, minha lógica de retry e meu parsing rodam de verdade; eu só não bato na rede. Como gravações ficam desatualizadas, eu também rodo uma suíte pequena de contrato contra o sandbox deles de forma agendada, não em todo pull request, para saber de uma mudança por um job falhando e não por um alerta às três da manhã.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- Como você mantém a suíte rápida depois de adotar um banco real?
- Como você testa um modo de falha como um timeout dessa API?
- O que você faz com testes que dependem de tempo ou de ordenação?
Mais perguntas para Desenvolvedor Backend
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas