web-dev-qa-db-fra.com

Erreur lors de la tentative d'exécution de rspec: `require ': impossible de charger un tel fichier - Rails_helper (LoadError)

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?

55
HPJAJ

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.

66
Dipak Gupta

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

56
fotanus

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
8
Daniel Loureiro

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 .

5
Hans Araya

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!

3
daveharris

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.

2
mycargus

Parfois, vous devez exécuter la commande rspec à partir du répertoire parent du projet

2
toki

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.

2
Anthony Dreessen

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
0
Ryosuke Hujisawa

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 ...

0
mr.musicman

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
0
Leandro Castro

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

0
thedanotto