我正在努力测试用户在创建后是否具有“用户”的默认角色。对于角色,我可以进行康卡和设计验证。
在我的用户模型中,我有这个剪辑
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
它返回真实......
有什么想法吗?
答案 0 :(得分: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