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?
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
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é.
À 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
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
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.
$Rails new your_app --skip-test-unit
config.generators do |g| g.test_framework :rspec end
group :test, :development do gem 'rspec-Rails' end
enregistrez-le et exécutez bundle install
pour installer rspec gem
Rails generate rspec:install
plus de détails, veuillez vous référer: https://github.com/rspec/rspec-Rails
Dans config/application, ajoutez ce code
config.generators do |g|
g.test_framework :rspec
g.integration_tool :rspec
end
$ 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
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.