0

我正在测试用户在创建后是否具有“用户”的默认角色。对于角色,我有 cancan 并设计了身份验证。

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

after_create :default_role

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

在 user.spec.rb 这个

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.roles.count.should > 0

结尾

和 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

它返回了真实...

有任何想法吗?

4

1 回答 1

1

创建用户后在 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
于 2013-06-05T06:05:39.320 回答