我正在尝试创建RSpec测试以测试下面的暂停代码。
我的代码暂停了一个或多个角色。
因此,一个Item有几个角色,每个角色都可以通过传入角色ID来挂起suspend_roles方法。
它还将Item子状态设置为" Suspended"如果所有角色都被暂停。
此代码位于Item
模型中:
def suspend_roles (role_ids)
role_ids.each do |role_id|
self.suspensions.create!(role_id: role_id, create_user_id: User.current_user.id)
end
if role_ids.count == Role.ids.count
self.lifecycle_sub_status = "Suspended"
self.save
elsif role_ids.count < Role.ids.count && role_ids.count > 1
self.lifecycle_sub_status = "Partial"
self.save
end
end
试验:
it 'suspends all roles' do
test_item = create :item
test_item.suspend_roles(Role.ids)
expect(test_item.suspensions.count).to eq (Role.ids.count)
expect(test_item.lifecycle_sub_status).to eq "Suspended"
end
现在出现问题:
Role.ids.count返回nil,即使我运行实际应用程序时它会返回id的数量。
User.current_user.id也返回nil
这是Application控制器中current_user的代码:
def current_user
if session[:user_id]
@current_user ||= User.find(session[:user_id])
return @current_user
end
end
在我的测试中,我有:
let(:user) { create :user }
我错过了什么吗?