Testes
Frameworks
- RSpec é o framework padrão (usado em
cpe-console,educacaoesaude). - O
reportsusa o Minitest padrão do Rails (test/). - Para novos projetos e novas funcionalidades, prefira RSpec.
Cobertura esperada
Na camada de API, o alvo de cobertura é 90% a 95% para models, services e jobs — a regra de negócio precisa estar coberta. Telas e código de apresentação têm cobertura mais flexível, mas a lógica crítica deve ser testada.
Fixtures e dados de teste
Use factories para montar os dados de teste (o Syens mantém uma pasta
factories/). Evite depender de dados de seed ou de registros pré-existentes no
banco.
Escreva código testável
Código fácil de testar nasce da arquitetura: service objects e query objects com entradas e saídas claras são muito mais simples de cobrir do que regra de negócio espalhada em controllers.
# spec/services/enrollments/create_spec.rb
RSpec.describe Enrollments::Create do
it "cria a matrícula escopada à escola" do
school = create(:school)
student = create(:student, school: school)
result = described_class.new({ student_id: student.id }, school: school).call
expect(result.success?).to be(true)
expect(result.enrollment.school).to eq(school)
end
end
Como rodar
# RSpec (cpe-console, educacao, saude)
bundle exec rspec
# Minitest (reports)
bin/rails test
Os testes também rodam na integração contínua (GitHub Actions) a cada push — veja CI/CD e deploy.