Rails / Pundit / RSpec - #let 或 #subject 调用时没有阻塞
Rails / Pundit / RSpec - #let or #subject called without a block
我已经使用
创建了 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
有什么想法吗?
我已经弄明白了。我错过了?在索引操作中,必须在权限块内创建一个 it 块,如下所示:
permissions :index? do
it 'allows users to index' do
expect(subject).to permit(user)
end
end
我已经使用
创建了 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
有什么想法吗?
我已经弄明白了。我错过了?在索引操作中,必须在权限块内创建一个 it 块,如下所示:
permissions :index? do
it 'allows users to index' do
expect(subject).to permit(user)
end
end