J'essaie de lancer rspec pour Ruby on Rails. Je cours Rails 4.1.1. J'ai installé la gemme, ai établi un dossier de spécifications avec quelques tests. J'ai créé un répertoire via $ Rails g rspec:install
J'ai essayé de créer une base de données de test via $ rake db:test:prepare
, mais le message d'erreur suivant est émis:
WARNING: db:test:prepare is deprecated. The Rails test helper now maintains your test
schema automatically, see the release notes for details.
J'ai donc fini par regarder ce message de débordement de pile , et des deux options, celle qui fonctionnait était
rake db:schema:load Rails_ENV=test
Donc, maintenant je dois lancer rspec.
Lorsque j'exécute $ rspec spec
à partir de la ligne de commande, le message d'erreur suivant s'affiche:
/Users/myname/.rbenv/versions/2.1.1/lib/Ruby/2.1.0/rubygems/core_ext/
kernel_require.rb:55:in `require': cannot load such file -- Rails_helper (LoadError)
Comment puis-je résoudre ce problème afin de pouvoir lancer des tests?
Il y a un problème avec rspec V3. Mais dans votre cas, vous utilisez V2.
changement
require 'Rails_helper'
à
require 'spec_helper'
Autres description trouver ici https://teamtreehouse.com/forum/problem-with-rspec
Pour V3:
Si quelqu'un utilise rspec V3, une erreur similaire se produit lorsque le générateur ne fonctionne pas. Donc, avant d'essayer quoi que ce soit, lancez générateur.
Rails generate rspec:install
Si vous obtenez une liste énorme d’avertissements sur votre console. Ensuite, vous devez supprimer --warnings
du fichier .rspec
.
En fait, je viens d'avoir cette erreur sur Rails 4 avec RSPEC 3, mais dans mon cas, j'ai oublié d'exécuter le générateur:
Rails generate rspec:install
De plus, je devais supprimer warnings
de .rspec
, comme indiqué par l'un des développeurs de rpsec
Pour moi, le problème était dû à une autre version de "support de rspec" chargée et activée. J'ai résolu en ajoutant un "exec bundle":
bundle exec rspec
Pour les versions plus récentes (3.5), si vous devez exécuter le générateur, Rails generate rspec:install
ne fonctionne pas pour moi. J'ai utilisé:
rspec --init
Crée .rspec
et spec/spec_helper.rb
.
EDIT: Au cas où, j’aurais découvert que j’avais installé rspec gem pour Ruby, pas celui pour Rails, aussi rspec: install n’était pas disponible. Devrait utiliser https://github.com/rspec/rspec-Rails .
J'ai eu la même erreur mais il n'y avait aucune référence à Rails_helper
nulle part et nous n'utilisions même pas Rails.
Cependant, j’ai finalement trouvé que mon ~/.rspec
exigeait Rails_helper
(probablement de la création de l’application Rails par le passé), ce qui était à l’origine du problème ...
$ cat ~/.rspec
--color
--format documentation
--require spec_helper
--require Rails_helper
La solution est aussi simple que de supprimer cette ligne. J'espère que cela aidera quelqu'un d'autre aux prises avec le même problème!
Aucune de ces suggestions n'a fonctionné pour moi sur Rails 4.2.0 avec rspec-Rails 3.2.3.
Au lieu de cela, j'ai placé les deux lignes suivantes en haut de mon fichier de spécifications:
require 'Rails_helper'
require 'spec_helper'
Maintenant je peux exécuter rspec spec/features/my_spec.rb
.
Parfois, vous devez exécuter la commande rspec à partir du répertoire parent du projet
Une possibilité qui a fonctionné pour moi est de vous assurer que vous avez besoin de spec_helper
. RubyMine peut par défaut exiger rspec
et cela peut parfois conduire à cette erreur.
Pour quelqu'un. Si vous avez cette erreur lorsque vous testez un fichier spécifique. vous pourriez aimer ça
$ bundle exec rspec ./spec/features/user_login_spec.rb
$ bundle exec rspec ./spec/models/user_login_spec.rb
Vous pouvez également avoir votre fichier mal nommé. Assurez-vous qu'il se termine par _spec.rb
. J'avais mal orthographié mon fichier pour qu'il se termine par _soec.rb
et me grattais la tête pendant un moment ...
N'oubliez pas de toujours exécuter la rspec
ou le bundle exec rspec
à la racine de votre projet. Quelque chose comme:
bundle exec rspec spec/features/file_test_spec.rb
J'ai eu l'erreur que vous avez décrite lors de l'exécution d'un test de contrôleur. Cependant, lorsque j'ai exécuté un test sur modèle, j'ai eu la véritable erreur. il a fini par dire que l'erreur se produisait car ma base de données n'avait pas été migrée. J'ai corrigé l'erreur en exécutant cette commande ...
rake db:test:prepare