Autotest rails

De wiki.nexiat.fr
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

Voir aussi