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

在规范/控制器/users_controller_spec.rb:8 中:

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

在活动.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 活动,但是当我尝试添加它时,我猜我无法正确添加它。谢谢您的帮助

更新:AdminUser 和 MerchantUser 是 User 的后代

POSIBLE FIX 给出错误的行实际上是:

   admin_user = Factory(:tech_admin)

我将其替换为:

  admin_user = FactoryGirl.build_stubbed(:tech_admin)

这样文件activity.rb就没有到达

最终修复 显然问题出在工厂(:经销商)上。我用 FactoryGirl.create(:reseller) 替换了它,一切正常。虽然现在我想知道并搜索这两种用途之间的区别是什么

4

0 回答 0