![](/img/trans.png)
[英]Rails Pundit Policy Spec test failing with NoMethodError
[英]Ruby on Rails: How to do a spec test for a policy
我正在使用Rails 4.2.6和Ruby 2.3.1
我正在嘗試為策略創建規格測試,在我的情況下稱為base_policy。 我需要測試政策是否得到遵守。
我的base_policy:
class Study::BasePolicy < ApplicationPolicy
def default?
@user.has_edit_access?
end
def terminology_toggle?
@user.has_edit_access?
end
end
我試圖做規格,但不能正常工作,並給出錯誤
Study::BasePolicy for read access allows access
Failure/Error: let (:base) {Base.new}
NameError:
uninitialized constant Base
我的規格文件如下:
require 'rails_helper'
describe Study::BasePolicy do
include UserAccountHelpers
include PermissionsHelpers
subject {described_class.new(user, base)}
let (:base) {Base.new}
before :each do
ua_create
end
after :each do
ua_destroy
end
context "for read access" do
let (:user) {@user_r}
it "allows access" do
allow_list [:detail]
end
it "deny access" do
deny_list [:edit, :update, :default, :terminology_toggle]
end
end
context "for edit access" do
let (:user) {@user_e}
it "allows access" do
allow_list [:edit, :update, :default, :terminology_toggle]
end
end
context "for system admin access" do
let (:user) {@user_sa}
it "allows access" do
allow_list [:edit, :update, :default, :terminology_toggle]
end
end
end
我想了解一種測試此策略的好方法,因為我對Rails測試的知識有限。
如果您沒有名為Base的類,則此行將不起作用
let (:base) {Base.new}
您正在嘗試創建一個不存在的類的實例。 例如,如果您有一個Person
類,那么您可以
let(:person) { Person.new }
或@person = Person.new
前一個塊中的@person = Person.new
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.