# Guía de Testing ADN > Cómo escribir tests para el sistema ADN ## Estructura de Tests ``` adn/tools/ └── spec/ ├── spec_helper.rb ├── db/ │ └── evento_spec.rb └── core/ ├── colores_spec.rb └── validador_spec.rb ``` ## Ejecutar Tests ```bash cd adn/tools # Todos los tests bundle exec rspec # Un archivo específico bundle exec rspec spec/db/evento_spec.rb # Con output detallado bundle exec rspec --format documentation ``` ## Escribir un Test ```ruby # spec/core/mi_modulo_spec.rb require_relative '../spec_helper' $LOAD_PATH.unshift File.expand_path('../../core', __dir__) require 'mi_modulo' describe 'ADN::MiModulo' do describe '.metodo' do it 'hace algo esperado' do expect(resultado).to eq(valor_esperado) end it 'rechaza valor inválido' do expect { metodo(inválido) }.to raise_error(ADN::ValidationError) end end end ``` ## Buenos Patrones 1. **Un describe por clase/módulo** 2. **Un it por comportamiento** 3. **Tests independientes** (sin orden ni dependencias) 4. **Nombres descriptivos**: `it 'valida formato HH:MM'` ## Helpers Disponibles - `expect(...).to eq(valor)` - `expect(...).to match(/regex/)` - `expect(...).to be true/false` - `expect { }.to raise_error(Error)` ## Cobertura | Módulo | Tests | | :--- | :--- | | db/evento | 3 | | core/colores | 6 | | core/validador | 6 | | **Total** | **15** | ## Próximos Tests - [ ] spec/core/error_handler_spec.rb - [ ] spec/core/help_formatter_spec.rb - [ ] spec/cli/db_spec.rb - [ ] spec/cli/jornada_spec.rb