Testar código que usa um banco de dados é desafiador — você precisa de comportamento realista dos dados sem flakiness ou lentidão. As abordagens incluem bancos de dados de teste, bancos de dados em memória, transações/rollback e mocking da camada de dados — cada uma com trade-offs.
O desafio
Database-interacting code needs testing, but databases bring challenges:
→ real DB → realistic but SLOWER; needs SETUP and CLEANUP (state between tests)
→ shared state → tests can interfere (order dependence, flakiness)
→ mocking the DB → fast but may not catch real query/integration bugs
→ Choose an approach balancing realism, speed, and isolation.
