web-dev-qa-db-fra.com

Ruby on Rails: passer de test_unit à rspec

Je suis en train de suivre un tutoriel qui a suggéré d'utiliser rspec, mais j'ai déjà traversé beaucoup d'installation par défaut Rails. Je ne veux vraiment pas avoir à refaire l'installation du tout. Quoi qu'il en soit, quand je lance

$ Rails g integration_test named

Je reçois

  invoke  test_unit
  create    test/integration/named_test.rb

Lorsque j'exécute bundle, divers gemmes rspec sont répertoriés, mais test_unit n'est pas. Le tutoriel semble avoir Rails invoque rspec au lieu de test_unit sans rien faire de plus. Comment puis-je obtenir Rails pour utiliser rspec avec la commande du générateur de test d'intégration?

68
Explosion Pills

Dans votre config/application.rb fichier :

config.generators do |g|
  g.test_framework :rspec
end

Maintenant, lorsque vous exécutez vos générateurs (exemple Rails generate scaffold post), vous obtenez des fichiers de test rspec. N'oubliez pas de redémarrer votre serveur. Pour plus d'informations sur les générateurs, voir:

Générateurs RailsCasts # 216 dans Rails

Si vous voulez vraiment utiliser le générateur integration_test, vous devrez modifier spécifiquement la commande:

Rails g integration_test named --integration-tool=rspec
99
Spyros

En travaillant avec Rails 3.2.8 et rspec-Rails 2.11.4, j'ai découvert que mon problème était dans mon Gemfile. J'ai eu rspec-Rails dans le :test groupe mais pas le :development groupe. Étant donné que Rails utilise par défaut le mode de développement (y compris lorsque vous exécutez générer), rspec-Rails doit être dans votre :development groupe pour qu'il se connecte aux générateurs. Une fois que j'ai mis cela en place, tout a bien fonctionné.

69
tovodeverett

À partir de Rails 3.2.12, suivez ces étapes pour

Rails new app_name --skip-test-unit

Ajoutez rspec-Rails à votre Gemfile dans le groupe de développement, test

group :development, :test do
  gem 'rspec-Rails'
end

Courir bundle install

Exécutez le générateur

Rails generate rspec:install

... et nettoyez votre répertoire de test existant:

rm -Rf $Rails_ROOT/test    
28
fontno

Je suis tombé sur ce problème aujourd'hui. application.rb doit être mis à jour avec:

config.generators do |g|
  g.test_framework :rspec
  g.integration_tool :rspec
end
8
iRonin

Pour utiliser RSpec au lieu de Test :: Unit par défaut, exécutez d'abord la commande suivante

$ Rails generate rspec:install

Cette commande créera les dossiers/fichiers suivants

create  .rspec
create  spec
create  spec/spec_helper.rb

Maintenant, chaque fois que vous avez utilisé un générateur pour générer Rails composants comme le contrôleur, le modèle, etc., il créera des RSpecs correspondants.

8
Amit Patel

1. lors de la création d'une nouvelle application Rails, ignorez le framework TestUnit, ou elle générera le répertoire test_unit.

$Rails new your_app --skip-test-unit

2. ajoutez le code ci-dessous au fichier your_app/config/application.rb:

config.generators do |g| g.test_framework :rspec end

3. ajoutez le code ci-dessous au Gemfile de votre_app:

group :test, :development do gem 'rspec-Rails' end enregistrez-le et exécutez bundle install pour installer rspec gem

4. Initialisez le répertoire spec /

Rails generate rspec:install

plus de détails, veuillez vous référer: https://github.com/rspec/rspec-Rails

2
xautjzd

Dans config/application, ajoutez ce code

 config.generators do |g|
       g.test_framework  :rspec
       g.integration_tool :rspec
 end
2
Amrit Dhungana
$ Rails g model Account
      invoke  active_record
      create    db/migrate/20140205052617_create_accounts.rb
      create    app/models/account.rb
      invoke    test_unit
      create      test/models/account_test.rb
      create      test/fixtures/accounts.yml
$ Rails d model Account

En cours d'exécution script/Rails génèrent rspec: install n'ajoute pas rspec comme framework par défaut. Ajout de la commande ci-dessous dans config/application.rb, puis cela fonctionne

config.generators do |g|
  g.test_framework :rspec
end
$ Rails g model Account
      invoke  active_record
      create    db/migrate/20140205052957_create_accounts.rb
      create    app/models/account.rb
      invoke    rspec
      create      spec/models/account_spec.rb
$ Rails -v
Rails 4.0.2
1
Abhishek Bose

Ce que j'ai trouvé que certaines des autres méthodes fonctionnent encore, c'est de vérifier mon orthographe .... J'avais ce que @tovodeverett avait regroupé rspec-Rails avec: development et: test mais orthographié développement incorrectement. Cela a résolu mon problème mais je générais des tests avec test_unit au lieu de rspec.

1
zigloo99