簡體   English   中英

Rspec測試登錄用戶。

[英]Rspec test for login user.CanCan

我正在嘗試為能力課程創建rspec測試。 我已經成功地為管理員編寫了該功能並對其進行了測試,但是我不知道如何為登錄用戶編寫測試(登錄用戶只能更新和銷毀其自己的注釋)。

這是capability.rb:

    class Ability
      include CanCan::Ability

      def initialize(user)
        user ||= User.new
        if user.admin?
          can :manage, :all
        else
          can :read, :all
          can :create, :update, :destroy, Comment, user_id: user.id
        end
      end
    end

這是capability_spec.rb:

    require 'rails_helper'
    require "cancan/matchers"

    describe Ability do
        it "user guest" do
            user = FactoryGirl.create(:user)
            ability = Ability.new(user)
            comment = Comment.new(user: user)
            expect(ability).to be_able_to(:read, comment)
        end

        it "user admin" do
            user = FactoryGirl.create(:user, role: 'admin')
            ability = Ability.new(user)
            comment = Comment.new(user: user)
            expect(ability).to be_able_to(:destroy, comment)
        end

將此代碼添加到您的spec_helper RSpec.configure中。

RSpec.configure do |config|
  config.include Devise::TestHelpers, type: :controller
  ...
end

這是在您的規格中使用devise助手。 像sign_in(user)。 因此,對於測試登錄用戶,您可以先像這樣對用戶進行簽名

it "user admin" do
    user = FactoryGirl.create(:user, role: 'admin')
    sign_in(user)
    # your code to test update and destroy ability
end    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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