【问题标题】:Rspec + Cancan errorRspec + Cancan 错误
【发布时间】:2015-03-20 23:06:45
【问题描述】:

admin_spec.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.

但测试仍然是红色的。为什么以及如何解决?

【问题讨论】:

标签: ruby-on-rails ruby rspec devise cancan


【解决方案1】:

你看过这篇文章吗?

Testing abilities in CanCan

也许你可以使用can而不是实际访问URL?确定是否允许 :user 访问 rails 管理路径的方法。

我假设您使用的是 Devise?如果是这样,我发现这篇可能是helpful 的另一篇 SO 文章。他们建议包括一个允许设计测试助手的块。

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

  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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 2013-01-28
    相关资源
    最近更新 更多