【发布时间】:2015-11-30 14:11:31
【问题描述】:
我正在使用 cancan gem。
我在班级中定义了能力:
module Gexcore
class Myability
include CanCan::Ability
def initialize(user)
can :delete_user, User do |victim|
..
end
end
end
end
我正在测试使用 RSpec 删除用户的能力:
RSpec.describe "Permissions to delete user", :type => :request do
describe 'del user' do
it 'superadmin can delete user' do
superadmin = double(User, :id => 10, <<some other fields>>)
ability = Mymodule::Myability.new(superadmin)
victim = double(User)
res = superadmin_ability.can?(:user_del, victim)
expect(res).to eq true
end
end
end
我的用户模型:
class User < ActiveRecord::Base
delegate :can?, :cannot?, :to => :ability
...
end
但我的能力看不到方法can? :delete_user, User。
它需要 User 类,但 RSpec 使用 RSpec::Mocks::Double 类调用它。
如何使用 Rspec 模拟正确测试 cancan gem 的能力?
【问题讨论】:
标签: ruby-on-rails unit-testing rspec cancan