Rspec:用参数测试cancan能力

时间:2015-11-30 14:11:31

标签: ruby-on-rails unit-testing rspec cancan

我正在使用cancan gem。

我有能力在班上定义:

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

我正在测试使用RSpec删除用户的能力:

class User < ActiveRecord::Base
  delegate :can?, :cannot?, :to => :ability
  ...
end

我的用户模型:

can? :delete_user, User

但它没有从我的能力中看到方法KeyCode。 它期望User类,但RSpec使用RSpec :: Mocks :: Double类调用它。

如何使用Rspec嘲讽从cancan gem正确测试能力?

1 个答案:

答案 0 :(得分:0)

RSpec正在使用Double类,因为它在代码中结束。对于RSpec,类必须为let(:user) do u = User.new u.stub!(:some_qualifier_in_your_delete_user_declaration? => true) u end 才能应用规则。

{{1}}

https://download-chromium.appspot.com