162 votes

Comment puis-je dire à Rails d'utiliser RSpec au lieu de test-unit lors de la création d'une nouvelle application Rails ?

Tengo test-unit installé et rspec installé (ainsi que -core , -expectations , -mocks y -rails version 2.6.x). Lorsque j'exécute la commande rails new foo il utilise test-unit pour générer les fichiers de stub de test au lieu de rspec .

Existe-t-il une option permettant d'indiquer à rails d'utiliser rspec pour générer les tests à la place ?

275voto

Zabba Points 26372

Ce qui suit devrait fonctionner :

à la ligne de commande :

rails new MYAPP -T # The -T option tells rails not to include Test::Unit

dans Gemfile :

gem 'rspec-rails'

à la ligne de commande :

bundle install
rails g rspec:install

0 votes

Je pense que certaines de ces étapes sont dans le désordre, non ? Il semble que cela pourrait fonctionner si on le fait dans le bon ordre. Veuillez modifier votre réponse et je la marquerai comme acceptée.

60 votes

Vous n'avez pas besoin de la generator.rb L'initialisateur est pris en charge par Railtie de RSpec. Tout ce dont vous avez besoin est rspec-rails au sein de la development du groupe de l Gemfile ce qui est suffisant pour l'exiger pour les générateurs. Vous n'avez pas non plus besoin de générer l'application avec -T vous pouvez supprimer le test dir et cela fonctionnera.

1 votes

Pouvez-vous modifier le code de g.test_framework = :rspec en g.test_framework :rspec ?

72voto

Sayuj Points 2134

Créez votre nouvelle application rails en tant que :

rails new <app_name> -T

Ou retirez votre test de votre application existante :

rm -rf test/

Faites une entrée dans votre Gemfile :

gem 'rspec-rails'

Depuis la ligne de commande, installez la gemme

$ bundle install

Depuis la ligne de commande, installez rspec dans votre application :

$ rails g rspec:install

Maintenant votre application rails utilise RSpec au lieu de test-unit.

2 votes

L'étape 'bundle install' manquait dans cette liste. Ajouté.

7voto

Nebojsa Zoric Points 41

Une fois que vous avez créé votre application rails avec :

rails new <app_name> -T  # to exclude Test::Unit

Ajoutez la gemme RSpec à votre Gemfile de la manière suivante :

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

Dans la ligne de commande, écrivez :

bundle install  # this will install the missing gems

Maintenant, vous devez installer RSpec en exécutant :

rails generate rspec:install

Cela va générer les fichiers suivants :

create  .rspec
create  spec
create  spec/spec_helper.rb
create  spec/rails_helper.rb

Je recommande vivement de lire tous les commentaires de spec_helper et rails_helper pour bien comprendre ce que fait chaque option.

Une fois que tout est configuré, vous pouvez exécuter tous vos tests avec :

bundle exec rspec

Pour en savoir plus sur les configurations recommandées pour spec_helper et rails_helper, consultez la page https://kolosek.com/rails-rspec-setup .

4voto

MTen Points 1

Je suis un nouveau développeur et je viens de créer un drapeau rails (-rspec) pour répondre au problème de l'OP. Il se débarrasse de Test::Unit et insère la gemme rails-rspec avec un script bash. Le script peut être modifié pour aider les développeurs linux en ajoutant automatiquement la gemme therubyracer ou créer des drapeaux et des gemsets personnalisés. (peut-être en allant spécifiquement à cette ligne de gemme et en supprimant le commentaire)

Voici l'essentiel && J'espère que cela aidera quelqu'un d'autre. https://gist.github.com/MTen/8310116

0voto

thisismydesign Points 751

Il n'y a pas de moyen natif de le faire avec la fonction rails CLI. Générer un nouveau projet sans test-unit :

rails new rails-app --skip-test

Et ensuite, suivez rspec pour l'intégrer dans la nouvelle application Rails.

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