无法使用rspec测试默认角色

时间:2013-06-05 05:47:44

标签: ruby-on-rails tdd rspec2

我正在努力测试用户在创建后是否具有“用户”的默认角色。对于角色,我可以进行康卡和设计验证。

在我的用户模型中,我有这个剪辑

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

它返回真实......

有什么想法吗?

1 个答案:

答案 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