Autotest rails
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Sujet | Tests automatiques Rails |
| Outils | RSpec, autotest, Spork |
| Approche | TDD |
| Voir aussi | Integration rails · Creation application |
Mise en place de tests automatiques sous Rails selon l'approche TDD (« Développement Dirigé par les Tests »), avec le framework RSpec (installation : voir Creation application).
autotest
gem install autotest -v 4.4.6
gem install autotest-rails-pure -v 4.1.2
On traite les tests des vues et des helpers directement dans les tests du contrôleur ; on supprime donc les dossiers dédiés :
git rm -r spec/views
git rm -r spec/helpers
rm -rf spec/views spec/helpers
Jouer les tests :
rspec spec/
bundle exec rspec spec/ # via l'environnement bundle
rspec spec/controllers/pages_controller_spec.rb
rake db:migrate # si erreur de base
autotest
bundle exec autotest # en cas d'erreur
Spork
Spork accélère l'exécution des tests (installation : voir Creation application).
spork --bootstrap
vi spec/spec_helper.rb
time rspec spec/
spork
En cas d'erreur uninitialized constant ActiveModel::Observing (NameError) :
gem install gemedit
gem edit spork
# Dans lib/spork/app_framework/rails.rb, ligne 56, commenter :
# Spork.trap_method(::ActiveModel::Observing::ClassMethods, :instantiate_observers)
Dans un autre terminal, le temps d'exécution est réduit via DRb :
time rspec --drb spec/
Ajouter l'option --drb au fichier .rspec :
--colour --drb
autotest et intégration
Fichier .autotest :
Autotest.add_hook :initialize do |autotest|
autotest.add_mapping(%r%^spec/(requests)/.*rb$%) do |filename, _|
filename
end
end