我有一个情况
let(:user) { create(:user, organization: org, role_ids: [Role::ROLE_CSA]) }
subject(:ability) { Ability.new(user) }
describe 'Not Permitted' do
# I need this
it { is_expected_not_to (be_able_to(:index, AdminsController)) }
# Or this
it { is_expected_to (not_be_able_to(:index, AdminsController)) }
end
但很遗憾,我发现is_expected_not_to
和not_be_able_to
无效。
我可以这样做
it 'should not permit' do
expect(ability).not_to be_able_to(:index, AdminsController)
end
但如果可能,我想使用short form
代替。有什么方法可以实现我想要的吗?
如果没有,我想创建新的custom matcher
,如果可能的话,其行为与be_able_to
或CanCan
的{{1}}相反。任何人都可以帮忙吗?
答案 0 :(得分:1)
来自:https://www.relishapp.com/rspec/rspec-core/docs/subject/one-liner-syntax
你应该可以这样做:
it { is_expected.not_to (be_able_to(:index, AdminsController)) }