RailsでRubyのrspecを実行しようとしています。 Rails 4.1.1を実行しています。 gemをインストールし、いくつかのテストでspecフォルダーを確立しました。 $ Rails g rspec:install
を使用してディレクトリを作成しました
$ rake db:test:prepare
を使用してテストデータベースを作成しようとしましたが、次のエラーメッセージがスローされます。
WARNING: db:test:prepare is deprecated. The Rails test helper now maintains your test
schema automatically, see the release notes for details.
そこで、私は このスタックオーバーフローポスト を見てしまいました。2つのオプションのうち、機能したのは次のとおりです。
rake db:schema:load Rails_ENV=test
したがって、今、rspecを実行する必要があります。
コマンドラインから$ rspec spec
を実行すると、次のエラーが表示されます。
/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)
これを解決してテストの実行を開始するにはどうすればよいですか?
Rspec V3にはいくつかの問題があります。しかし、あなたの場合はV2を使用しています。
変化する
require 'Rails_helper'
に
require 'spec_helper'
その他の説明はこちらをご覧ください https://teamtreehouse.com/forum/problem-with-rspec
V3の場合:
誰かがrspec V3を使用している場合、ジェネレータが実行されていないときに同様のエラーが発生します。そのため、何かを試す前にジェネレーターを実行します。
Rails generate rspec:install
コンソールに大量の警告リストが表示される場合。次に、--warnings
ファイルから.rspec
を削除する必要があります。
私は実際にrspec 3のRails 4でこのエラーが発生しましたが、私の場合、ジェネレーターを実行するのを忘れていました。
Rails generate rspec:install
また、warnings
を.rspec
から削除する必要がありました。これは rpsec開発者の1人が述べた
私にとって、この問題は、異なる「rspec-support」バージョンがロードされ、アクティブ化されたことが原因でした。 「バンドルexec」を先頭に追加して解決しました。
bundle exec rspec
新しいバージョン(3.5)では、ジェネレーターを実行する必要がある場合、Rails generate rspec:install
は機能しません。私が使用した:
rspec --init
.rspec
およびspec/spec_helper.rb
を作成します。
編集:念のため、Rails用ではなくRuby用のrspec gemをインストールしたことがわかったので、rspec:installは使用できませんでした。 https://github.com/rspec/rspec-Rails を使用する必要があります。
同じエラーが発生しましたが、Rails_helper
への参照はどこにもなく、Railsも使用していませんでした。
しかし、最終的に~/.rspec
がRails_helper
を必要としていることがわかり(過去にRailsアプリを作成したためと思われます)、これが問題の原因でした...
$ cat ~/.rspec
--color
--format documentation
--require spec_helper
--require Rails_helper
修正は、その行を削除するのと同じくらい簡単です。これが他の誰かが同じ問題に取り組むのに役立つことを願っています!
Rails 4.2.0とrspec-Rails 3.2.3では、これらの提案はどれもうまくいきませんでした。
代わりに、スペックファイルの先頭に次の2行を配置しました。
require 'Rails_helper'
require 'spec_helper'
これで、rspec spec/features/my_spec.rb
を実行できます。
Projectの親ディレクトリからrspecコマンドを実行する必要がある場合があります
私のために働いた可能性の1つは、spec_helper
が必要であることを確認することです。 RubyMineはデフォルトでrspec
を必要とする場合があり、このエラーが発生する場合があります。
誰かのため。特定のファイルをテストしようとしたときにそのエラーが発生した場合。あなたはこれが好きかもしれません
$ bundle exec rspec ./spec/features/user_login_spec.rb
$ bundle exec rspec ./spec/models/user_login_spec.rb
また、ファイルの名前が間違っている可能性もあります。 _spec.rb
で終わっていることを確認してください。 _soec.rb
で終わるファイルのスペルを間違えていましたが、しばらく頭を悩ませていました...
プロジェクトのルートからrspec
またはbundle exec rspec
を実行することを常に忘れないでください。何かのようなもの:
bundle exec rspec spec/features/file_test_spec.rb
コントローラテストの実行時に説明したエラーが表示されました。ただし、モデルテストを実行すると、真のエラーが発生しました。データベースが移行されなかったためにエラーが発生したと言ってしまいました。このコマンドを実行してエラーを修正しました...
rake db:test:prepare