モデルの仕様、コントローラーの仕様、および要求の仕様があります。私が実行すると:
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つの用途の違いは何ですか