12

Rails 3.2 を使用しており、rspec (2.11.1) を使用しています。「rake spec」を使用してテスト スイートを実行すると、エラーが発生します。「rspec」で実行すると、すべてがパスします。この問題について他の言及を見てきましたが、何が起こっているのか、何がベストプラクティスなのかを説明する決定的なものはありません.

「rake spec」または「rake tmp:clear && rake spec」を実行すると、テストが失敗します。

「rspec」または「rspec spec」または「rake db:test:prepare && rspec」を実行すると、テストに合格します。

唯一の違いは、rake が "db:test:prepare" を実行したことだと思いましたが、rspec を実行する前に手動でそれを実行すると、テストがパスするので、それだけでは話になりません。

少し読んだ後、Gemfileを変更しました。以前は、「The RSpec Book」(p328) のように設定しており、rspec gem を「group :development, :test」ブロック内に配置する方法が説明されていました。他のSOの投稿を読んだ後、「:development」を削除してバンドルを行いました。"rake spec" は何もしません。「rspec」は以前と同じように機能します。

非常に混乱...

4

3 に答える 3

9

実行してみてくださいRAILS_ENV=test rake spec

于 2012-10-23T22:54:24.490 に答える
3

rspec-rails github によると、rspec-rails gem を Gemfile の開発グループとテスト グループに入れます。これは、テスト rake タスクがテスト環境に切り替える前に、最初に開発環境をロードするためです。

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

また、Gemfile を使用している場合は、"bundle exec rake spec" を使用してすべての仕様を実行します。単一のスペック ファイルを実行するには、「bundle exec rake rspec path/to/spec_file」を使用します。「bundle exec」を使用すると、システムの rake コマンドではなく、Gemfile を介してインストールされた正しい rake コマンドを使用していることを確認できます。

参考:https ://github.com/rails/rails/issues/8591

于 2014-01-23T17:22:01.237 に答える