Rspec + 康康错误
Rspec + Cancan error
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.
但是测试还是红色的。为什么以及如何修复它?
你看过这篇文章了吗?
而不是实际访问 URL,也许您可以使用 can?确定是否允许 :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
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.
但是测试还是红色的。为什么以及如何修复它?
你看过这篇文章了吗?
而不是实际访问 URL,也许您可以使用 can?确定是否允许 :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