1

モデルの仕様、コントローラーの仕様、および要求の仕様があります。私が実行すると:

         rspec spec

モデルの仕様が最初に実行され、次にリクエストが実行され、次にコントローラーの仕様が実行されると、最初のコントローラーの仕様は問題ありませんが、次の仕様は失敗します。しかし、コントローラー仕様のみを実行すると、それらはすべて合格します。Rails 3.0.9、ruby 1.8、factory_girl 2.2.0 を使用しています。私は持っている

        config.cache_classes = true

test.rb で、ruby や factory_girl のバージョンを変更できません。誰かが私を助けることができますか?

更新

これはエラーです:

 96) UsersController reset_password: as non-master_admin: does not reset a user's password
 Failure/Error: let!(:user) { Factory(:admin_user) }
 ActiveRecord::AssociationTypeMismatch:
   AdminUser(#-630697398) expected, got MerchantUser(#-629918188)
 # ./app/models/activity.rb:33:in `log'
 # ./config/initializers/add_activity_logging.rb:8:in `_callback_after_759'
 # ./spec/controllers/users_controller_spec.rb:8

spec/controllers/users_controller_spec.rb:8:

let!(:user) { Factory(:admin_user) }

activity.rb:33:

  create(:user => user, :title => title, :changeable_id => changeable.id,
      :changeable_type => changeable.class.to_s, :data => attributes)

またあります:

  belongs_to :user, :class_name => 'AdminUser'

クラス AdminUser には has_many アクティビティはありませんが、追加しようとしたときに正しく追加できなかったと思います。助けてくれてありがとう

UPDATE : AdminUser と MerchantUser は User の子孫です

可能な修正 エラーが発生した行は、実際には次のとおりでした。

   admin_user = Factory(:tech_admin)

私はそれを次のように置き換えました:

  admin_user = FactoryGirl.build_stubbed(:tech_admin)

このようにして、ファイル activity.rb には到達しません

最終修正 どうやら問題は Factory(:reseller) にありました。これを FactoryGirl.create(:reseller) に置き換えたところ、すべてが機能しました。今、私は疑問に思って検索していますが、2つの用途の違いは何ですか

4

0 に答える 0