Ruby on rails can';t使用rspec测试默认角色

Ruby on rails can';t使用rspec测试默认角色,ruby-on-rails,tdd,rspec2,Ruby On Rails,Tdd,Rspec2,我正在测试用户在创建后是否具有默认的“用户”角色。对于角色,我有cancan和Desive on authentication 在我的用户模型中,我剪掉了这个 after_create :default_role private def default_role self.roles << Role.find_by_name("user") self.save end 结束 和rspec输出 Failure/Error: user.ro

我正在测试用户在创建后是否具有默认的“用户”角色。对于角色,我有cancan和Desive on authentication

在我的用户模型中,我剪掉了这个

after_create :default_role

private
    def default_role
       self.roles << Role.find_by_name("user")
       self.save
    end
结束

和rspec输出

Failure/Error: user.roles.count.should > 0
   expected: > 0
        got:   0
所以我真的想通过控制台使用

user = User.create! name: 'Andrew', email: "asdf@asds.sd", password: "12341234", password_confirmation: '12341234'
成功创建新用户实例后,我运行

user.has_role? :user
结果是真的


有什么想法吗

创建用户后在Rspec中。您必须在创建“用户对象”后立即重新加载它。像下面这样重写代码

it 'should have default role' do
  role = Role.create! name: 'user'
  user = User.create!(name: 'Andrew', email: "asdf@asds.sd", password: "12341234", password_confirmation: '12341234')
  user.reload
  user.roles.count.should > 0
end
it 'should have default role' do
  role = Role.create! name: 'user'
  user = User.create!(name: 'Andrew', email: "asdf@asds.sd", password: "12341234", password_confirmation: '12341234')
  user.reload
  user.roles.count.should > 0
end