我的 Ability.rb 中定义了以下能力:
if user.role? :chief
can [:action1, :action2], Request, user: {id: user.subordinate_ids}
end
在我的能力测试中,我有以下几点:
subject{ Ability.new(user) }
let(:user) { create(:chief_user) }
let(:subordinate) { create(:user, boss: user) }
it { is_expected.to be_able_to([:action1, :action2], Request.new(user: subordinate)) }
该功能在进行手动测试时按预期工作,但我无法使此测试工作。我已经使用适当的参数尝试了 Request.create,但我仍然得到相同的结果。
我做了一些调试,相应的关联是有序的(主管有下属,请求属于下属,所以实际测试一个主管只能action1,action2他的下属的请求)。
我正在使用 CanCanCan 和 RSpec 进行测试。
关于如何进行此测试的任何见解?