簡體   English   中英

Ruby on Rails:如何對策略進行規格測試

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM