82 votes

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à fait beaucoup d'installation de rails par défaut. Je ne veux vraiment pas avoir à refaire l'installation du tout. Quoi qu'il en soit, lorsque j'exécute

$ rails g integration_test named

Je reçois

  invoke  test_unit
  create    test/integration/named_test.rb

Quand je cours bundle , divers rspec Les pierres précieuses sont répertoriées, mais test_unit ne l'est pas. Le tutoriel semble demander à rails d'invoquer rspec au lieu de test_unit sans rien faire de plus. Comment faire pour que les rails utilisent rspec avec la commande du générateur de tests d'intégration ?

117voto

Spyros Points 13741

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 :

RailsCasts #216 Générateurs dans Rails 3

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

1 votes

J'avais déjà fait cela Que voulez-vous dire par redémarrer le serveur ? Il n'a jamais été en marche.

1 votes

Je veux dire redémarrer spork ou votre interface de test. Si vous avez bien fait cela et exécutez 'rails g scaffold --help', vous devriez voir 'rspec' comme le cadre de test par défaut. Vérifiez également mon édition.

1 votes

J'ai mis à jour le fichier config/application.rb comme vous l'avez spécifié et j'ai exécuté rails g scaffold --help et il toujours dit test_unit. Y a-t-il quelque chose que je doive faire pour relancer la configuration ou un moyen de modifier manuellement ces paramètres ?

73voto

tovodeverett Points 643

Travailler avec Rails 3.2.8 y rspec-rails 2.11.4 j'ai découvert que mon problème était dans mon Gemfile. J'avais rspec-rails dans le :test mais pas le groupe :development groupe. Puisque Rails fonctionne par défaut en mode développement (y compris lorsque vous exécutez generate), rspec-rails doit être dans votre :development pour qu'il se branche sur les générateurs. Une fois que j'ai eu ça en place, tout a bien fonctionné.

4 votes

+1 rspec-rails installer comme railitie github.com/rspec/rspec-rails/blob/master/lib/ et se configure comme cadre de test et outil d'intégration. On peut donc inclure la gemme dans un groupe partagé dans le gemfile group :development, :test do

0 votes

Toujours d'actualité 7 ans plus tard !

31voto

fontno Points 2412

À partir de Rails 3.2.12, suivez les étapes suivantes dans l'ordre

rails new app_name --skip-test-unit

Ajoutez rspec-rails à votre Gemfile dans le groupe de développement et de test.

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

Exécuter bundle install

Faire fonctionner le générateur

rails generate rspec:install

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

rm -Rf $RAILS_ROOT/test

8 votes

Cela fonctionne également si le projet est déjà créé. Ignorez simplement le rails new commandement.

0 votes

Attention à l'utilisation du rm -Rf $RAILS_ROOT/test vous supprimerez aussi les aperçus de vos mailers...

9voto

iRonin Points 131

Je suis tombé sur cette question aujourd'hui. application.rb doit être mis à jour avec :

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

7 votes

L'édition du fichier application.rb n'est plus nécessaire, du moins sur Rails 3.2 avec rspec-rails

8voto

Amit Patel Points 2478

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

$ rails generate rspec:install

Cette commande va créer les dossiers/fichiers suivants

create  .rspec
create  spec
create  spec/spec_helper.rb

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

0 votes

Cela ne fonctionnera pas (rails 4) si vous n'avez pas déjà rspec dans votre Gemfile. Voir la réponse de fontno ci-dessous.

0 votes

Comment faire pour revenir en arrière ? Puis-je utiliser les deux générateurs en même temps ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X