首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby on Rails:如何对策略进行规范测试

Ruby on Rails:如何对策略进行规范测试
EN

Stack Overflow用户
提问于 2018-04-13 17:22:48
回答 1查看 221关注 0票数 0

我使用的是Rails 4.2.6和Ruby 2.3.1

我正在尝试为策略创建一个规范测试,在我的情景中称为base_policy。我需要测试这些政策是否受到尊重。

我的base_policy:

代码语言:javascript
复制
class Study::BasePolicy < ApplicationPolicy
  def default?
    @user.has_edit_access?
  end

  def  terminology_toggle?
    @user.has_edit_access?
  end
end

我试着做这个规范,但运行不好,并给出了错误,因为

代码语言:javascript
复制
Study::BasePolicy for read access allows access
     Failure/Error: let (:base) {Base.new}

   NameError:
       uninitialized constant Base

我的等级库文件如下:

代码语言:javascript
复制
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中的测试知识有限。

EN

回答 1

Stack Overflow用户

发布于 2018-04-13 19:00:11

如果没有名为Base的类,这行代码将不起作用

代码语言:javascript
复制
  let (:base) {Base.new}

您正在尝试创建一个不存在的类的实例。例如,如果你有一个Person类,那么你可以这样做

代码语言:javascript
复制
let(:person) { Person.new }

或者在before块中使用@person = Person.new

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49813528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档