Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rspec+;坎坎误差_Ruby On Rails_Ruby_Rspec_Devise_Cancan - Fatal编程技术网

Ruby on rails Rspec+;坎坎误差

Ruby on rails Rspec+;坎坎误差,ruby-on-rails,ruby,rspec,devise,cancan,Ruby On Rails,Ruby,Rspec,Devise,Cancan,管理规范rb it "checks access for user" do visit rails_admin_path login(:user) #helper method expect(page).to raise_error(CanCan::AccessDenied) end 控制台输出 Failure/Error: login(:user) CanCan::AccessDenied: You are not authorized to access this page

管理规范rb

it "checks access for user" do
  visit rails_admin_path
  login(:user) #helper method
  expect(page).to raise_error(CanCan::AccessDenied)
end
控制台输出

Failure/Error: login(:user)
CanCan::AccessDenied:
  You are not authorized to access this page.

但测试仍然是红色的。为什么以及如何修复它?

您看过这篇文章了吗

与其访问URL,不如使用can?方法来确定:用户是否允许访问rails管理路径

我猜你在用Desive?如果是这样的话,我发现另一篇可能是这样的文章。他们建议包括一个模块,允许设计测试助手

或者,切换到CanCanCan(这就是我们目前使用的),它工作起来更容易(因为不再支持CanCan):


您能告诉我们您的登录助手方法是什么样子的,以及您正在用什么来存根用户吗<代码>:用户(user@gmail.com)无法访问管理页面,
:admin(admin@gmail.com)
  context 'sign_in' do
    scenario 'with valid information should redirect to the administration dashboard', :js => true do
      sign_in_with sign_in_url, registered_user.email, 'validpassword', 'admin_user'

      expect(page).to have_content('Site Administration')
    end

    scenario 'with invalid information', :js => true do
      sign_in_with sign_in_url, registered_user.email, 'invalidvalidpassword', 'admin_user'
      expect(page).to have_content('Invalid email or password')
    end
  end