Ruby on rails can';t使用rspec测试默认角色
我正在测试用户在创建后是否具有默认的“用户”角色。对于角色,我有cancan和Desive on authentication 在我的用户模型中,我剪掉了这个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
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