【问题标题】:Rails / Pundit / RSpec - #let or #subject called without a blockRails / Pundit / RSpec - #let 或 #subject 在没有块的情况下调用
【发布时间】:2015-07-15 11:40:40
【问题描述】:

我创建了 Pundit 政策规范

rails g pundit:policy class

...但规格给出以下错误:

.rvm/gems/ruby-2.2.2/gems/rspec-core-3.3.1/lib/rspec/core/memoized_helpers.rb:287:in `let': #let or #subject called without a block (RuntimeError)
from .rvm/gems/ruby-2.2.2/gems/rspec-core-3.3.1/lib/rspec/core/memoized_helpers.rb:405:in `subject'
from spec/policies/application_policy_spec.rb:10:in `block (2 levels) in <top (required)>'

但在规范中,主题似乎是用块来调用的。这是生成的规范:

require 'rails_helper'

describe ApplicationPolicy do

  let(:user) { User.new }

  subject { described_class }

  permissions :index do
    expect(subject).to permit(user)
  end

  permissions :show? do
    pending "add some examples to (or delete) #{__FILE__}"
  end

  permissions :create? do
    pending "add some examples to (or delete) #{__FILE__}"
  end

  permissions :update? do
    pending "add some examples to (or delete) #{__FILE__}"
  end

  permissions :destroy? do
    pending "add some examples to (or delete) #{__FILE__}"
  end
end

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails rspec pundit


    【解决方案1】:

    我想通了。我错过了?在索引操作中,并且必须在权限块内创建一个 it 块,如下所示:

      permissions :index? do
        it 'allows users to index' do  
          expect(subject).to permit(user)
        end
      end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-31
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      • 2014-02-12
      • 2016-10-18
      相关资源
      最近更新 更多