Ruby on rails 在控制器级别测试未经cancan授权的操作是否有任何好处,或者这是多余的?

Ruby on rails 在控制器级别测试未经cancan授权的操作是否有任何好处,或者这是多余的?,ruby-on-rails,rspec,cancan,Ruby On Rails,Rspec,Cancan,假设我定义了以下CanCan能力 can :index, Project cannot :show, Project 还有一种特殊的能力 it { is_expected.to have_abilities([:index], Project } it { is_expected.to not_have_abilities([:show], Project } 是否存在在控制器级别测试未经授权的操作有利的情况,或者这是多余的 describe "GET #show" do it "rai

假设我定义了以下CanCan能力

can :index, Project
cannot :show, Project
还有一种特殊的能力

it { is_expected.to have_abilities([:index], Project }
it { is_expected.to not_have_abilities([:show], Project }
是否存在在控制器级别测试未经授权的操作有利的情况,或者这是多余的

describe "GET #show" do
  it "raises Access Denied" do 
    expect { 
      get :show, { id: subject.id} 
    }.to raise_error(CanCan::AccessDenied)
  end
end

我想说的是,只要有你的能力配置规范就可以了,因为这可以锻炼你的应用程序的业务逻辑。未经授权执行某项操作时引发
CanCan::AccessDenied
错误的功能不可用


如果您在访问被拒绝时使用了自己的自定义错误类,那么我认为可能需要编写您提到的控制器规格。

感谢您确认@paul。将有助于简化臃肿的控制器测试套件!