Ich versuche, rspec für Ruby on Rails auszuführen. Ich betreibe Rails 4.1.1. Ich habe das Juwel installiert, habe mit einigen Tests einen Spec-Ordner erstellt. Ich habe ein Verzeichnis erstellt durch $ Rails g rspec:install
Ich habe versucht, eine Testdatenbank über $ rake db:test:prepare
zu erstellen, aber es wird folgende Fehlermeldung ausgegeben:
WARNING: db:test:prepare is deprecated. The Rails test helper now maintains your test
schema automatically, see the release notes for details.
Also schaute ich mir diesen Stack Overflow Post an, und von den beiden Optionen funktionierte die folgende:
rake db:schema:load Rails_ENV=test
Also, jetzt muss ich rspec ausführen.
Wenn ich $ rspec spec
von der Kommandozeile aus laufe, erhalte ich diesen Fehler:
/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)
Wie kann ich das beheben, damit ich mit dem Ausführen von Tests beginnen kann?
Es gibt einige Probleme mit rspec V3. In Ihrem Fall verwenden Sie jedoch V2.
veränderung
require 'Rails_helper'
zu
require 'spec_helper'
Weitere Beschreibung finden Sie hier https://teamtreehouse.com/forum/problem-with-rspec
Für V3:
Wenn jemand mit rspec V3 arbeitet, tritt ein ähnlicher Fehler auf, wenn der Generator nicht läuft. Also, bevor Sie irgendetwas versuchen, Generator laufen zu lassen.
Rails generate rspec:install
Wenn Sie eine riesige Liste mit Warnungen auf Ihrer Konsole erhalten. Dann müssen Sie --warnings
aus der .rspec
-Datei entfernen.
Ich hatte diesen Fehler gerade auf Rails 4 mit rspec 3, aber in meinem Fall habe ich vergessen, den Generator auszuführen:
Rails generate rspec:install
Ich musste auch warnings
aus .rspec
entfernen, wie von einem der rpsec-Entwickler angegeben
Für mich war das Problem aufgrund einer anderen "rspec-support" -Version geladen und aktiviert. Ich habe das Problem gelöst, indem ich ein "Bundle exec" vorangestellt habe:
bundle exec rspec
Für neuere Versionen (3.5) funktioniert Rails generate rspec:install
für mich nicht, wenn Sie den Generator ausführen müssen. Ich benutzte:
rspec --init
Erzeugt .rspec
und spec/spec_helper.rb
.
EDIT: Nur für den Fall habe ich herausgefunden, dass ich rspec gem für Ruby und nicht das für Rails installiert habe. Rspec: install war nicht verfügbar. Verwenden Sie https://github.com/rspec/rspec-Rails .
Ich hatte den gleichen Fehler, aber es gab nirgendwo einen Verweis auf Rails_helper
und wir verwendeten nicht einmal Rails.
Schließlich stellte ich jedoch fest, dass mein ~/.rspec
Rails_helper
(vermutlich aus der früheren Erstellung der Rails-App) erforderte, was zu dem Problem führte ...
$ cat ~/.rspec
--color
--format documentation
--require spec_helper
--require Rails_helper
Das Update ist so einfach wie das Entfernen dieser Zeile. Hoffe, das hilft jemandem, der sich mit dem gleichen Problem auseinandersetzt!
Keiner dieser Vorschläge hat auf Rails 4.2.0 mit rspec-Rails 3.2.3 funktioniert.
Stattdessen habe ich die folgenden zwei Zeilen oben in meine Spec-Datei eingefügt:
require 'Rails_helper'
require 'spec_helper'
Jetzt kann ich rspec spec/features/my_spec.rb
ausführen.
Manchmal müssen Sie den Befehl rspec im übergeordneten Verzeichnis von Project ausführen
Eine Möglichkeit, die für mich funktioniert hat, ist sicherzustellen, dass Sie spec_helper
benötigen. RubyMine kann standardmäßig rspec
erfordern, was manchmal zu diesem Fehler führen kann.
Für jemanden. Wenn Sie diese Fehlermeldung erhalten haben, testen Sie eine bestimmte Datei. Sie könnten das mögen
$ bundle exec rspec ./spec/features/user_login_spec.rb
$ bundle exec rspec ./spec/models/user_login_spec.rb
Möglicherweise haben Sie Ihre Datei auch falsch benannt. Stellen Sie sicher, dass es mit _spec.rb
endet. Ich hatte meine Datei falsch geschrieben, um _soec.rb
zu enden, und kratzte sich eine Weile am Kopf ...
Denken Sie immer daran, die rspec
oder den bundle exec rspec
im Stammverzeichnis Ihres Projekts auszuführen. So etwas wie:
bundle exec rspec spec/features/file_test_spec.rb
Ich habe den Fehler erhalten, den Sie beim Ausführen eines Controllertests beschrieben haben. Als ich jedoch einen Modelltest durchführte, bekam ich den wahren Fehler. Es endete damit, dass der Fehler aufgetreten ist, weil meine Datenbank nicht migriert wurde. Ich habe den Fehler durch Ausführen dieses Befehls behoben ...
rake db:test:prepare