Pular para o conteúdo principal

Testes

Frameworks

  • RSpec é o framework padrão (usado em cpe-console, educacao e saude).
  • O reports usa 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.