我使用的是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中的测试知识有限。
发布于 2018-04-13 19:00:11
如果没有名为Base的类,这行代码将不起作用
let (:base) {Base.new}您正在尝试创建一个不存在的类的实例。例如,如果你有一个Person类,那么你可以这样做
let(:person) { Person.new }或者在before块中使用@person = Person.new。
https://stackoverflow.com/questions/49813528
复制相似问题