Injeção de dependência sem framework
Pergunta
O que é injeção de dependência, e por que ela ajuda a testar mesmo sem nenhum container ou framework de DI?
Resposta esperada
Injeção de dependência é passar as dependências de um objeto de fora (pelo construtor ou por parâmetro) em vez de o objeto criá-las internamente com `new`. Sem framework nenhum: se `PedidoService` recebe um `PagamentoGateway` no construtor, o teste passa um fake/stub e verifica o comportamento sem tocar na rede; em produção você passa a implementação real. Um 'container de DI' só automatiza essa passagem quando o grafo cresce — o valor (testabilidade, trocar implementação, ver as dependências explícitas na assinatura) vem do padrão, não da ferramenta. É o D de SOLID aplicado.
Por que perguntam isso
Pergunta pleno/sênior. Erro comum: achar que DI = usar Spring/NestJS. Resposta forte mostra o construtor recebendo a interface e o teste injetando um duplo.