Skip to content

Estratégia de Teste de Banco de Dados

Os testes de adaptadores de banco de dados do NENE2 são determinísticos por padrão e não requerem um servidor de banco de dados específico do desenvolvedor.

Estratégia Padrão

Os testes de adaptadores de banco de dados gerenciados pelo framework usam primeiro um banco de dados SQLite em memória.

Razões:

  • Os testes rodam dentro do container PHP existente
  • Nenhuma credencial MySQL ou PostgreSQL local é necessária
  • Cada teste pode criar seu próprio schema
  • Rápido o suficiente para composer check
  • Fácil de inspecionar e entender

Comando padrão para verificações focadas de adaptadores de banco de dados:

bash
docker compose run --rm app composer test:database

composer check continua executando a suite PHPUnit completa incluindo testes de adaptadores de banco de dados.

Formato dos Testes

Testes de adaptadores de banco de dados devem:

  • criar o schema no teste
  • usar dados pequenos e determinísticos
  • evitar credenciais próximas à produção
  • evitar depender do estado das migrações (a menos que o teste seja explicitamente sobre migrações)
  • preferir objetos de configuração tipados a variáveis de ambiente brutas
  • colocar expectativas SQL perto do adaptador sendo testado

Banco de Dados Externo

Para comportamentos de adaptador que o SQLite não pode cobrir, verificação MySQL via Docker Compose está disponível.

Inicie o serviço e execute o comando opt-in:

bash
docker compose up -d mysql
docker compose run --rm app composer test:database:mysql

Este caminho verifica criação de conexão PDO MySQL, execução de queries parametrizadas e rollback de transação contra um serviço MySQL real.

Testes de banco de dados externos permanecem opt-in até que containers de serviço documentados e credenciais seguras existam em CI. Eles não bloqueiam o caminho composer check local padrão.

Os padrões do Docker Compose são credenciais de desenvolvimento apenas locais. Sobrescreva com variáveis de ambiente se necessário, e não comite segredos reais de banco de dados.

Testes de Migração

Testes de migração devem ser separados dos testes de repositório de adaptadores.

Ao introduzir testes de migração, defina:

  • qual serviço de banco de dados usar em CI
  • como resetar o schema entre execuções
  • se seeds são permitidos
  • qual comando Composer executar
  • comportamento quando migrações são intencionalmente irreversíveis

Publicado sob a licença MIT.