0

Rails 4.0 から 4.1 にアップグレードする前に Spring なしで RSpec/Guard を使用していましたが、すべてのテストは緑色のドットと緑色のテキスト以外の出力なしで合格していました。Spring をアップグレードしてインストールした後、Spring を必要なものと一緒にインストールした後、合格したテストでエラーが発生し、「一意性」エラーが原因でテストが合格しないことがあります。

テストの合格と不合格の間の一般的なエラー:

An error occurred in an after(:all) hook.
  NameError: uninitialized constant Recipe
  occurred at /home/user/.rvm/gems/ruby-2.1.0@global/gems/activesupport-4.1.0/lib/active_support/inflector/methods.rb:238:in 'const_get'

after(:all) フックは、単純にすべての Manager::Wine オブジェクト (および Manager::Wine オブジェクトの has_many レシピ) を削除します。Manager は Rails エンジンで、Wine モデルと Recipe モデルがあります。Wine クラスのどこにも Recipe 定数が明示的に指定されていません。しかし、前に述べたように、Spring をアップグレードしてインストールするまで、このエラーは通常の RSpec/Guard テストでは表示されませんでした。

他の失敗は、「属性が既に取得されている」ためです。たとえば、標準の「is valid factory」テストは create() で失敗します。これが原因です。しかし、私はRSpecで指定しました:

config.before(:each) do
    DatabaseCleaner.start
end

Spring より前のランダム化されたテストでは、これらのエラーは発生しませんでした。

Gemfile スニペット:

group :development, :test do
    gem 'spring'
    gem 'rspec-rails'
    gem 'guard'
    gem 'guard-rspec', require: false
    gem 'spring-commands-rspec'
    gem 'factory_girl_rails'
    gem 'database_cleaner'
end

Guardfile には以下が含まれます。

guard :rspec, cmd:"spring rspec" do

Rails app_root/bin には次のファイルが含まれています。

rails
rake
rspec
spring

???

4

1 に答える 1

0

本当に奇妙です。以前はこの問題について知らされていませんでしたが、アプリケーションはワインとレシピの間の HABTM 関係を判断できなくなりました。引数を含めるようにモデルを更新したところjoin_table、「未定義の定数」エラーが発生しなくなりました。これを見つけたのは、アプリをブラウザーにロードして、対処するためのより良いエラーメッセージが表示されたためです. 「重複エントリ」の問題が引き続き発生します。

また、各モデルの destroy_all 呼び出しを削除しました。これは、各タスクの後に DatabaseCleaner が実行されることを考えると不要だと思うからです。

于 2014-04-19T02:05:34.553 に答える