如何使用 RSPEC 测试当前用户 & 这是我的控制器

How to Test The Current User using RSPEC & Here is my controller

这是 AdminController,它在第一个操作中使用会话检查用户的当前帐户和当前角色,在第二个操作中我们检查当前用户的当前角色,因为每个用户都有多个角色。

class AdminController < ActionController::Base
  protect_from_forgery
  skip_before_action :verify_authenticity_token

  def current_account
    if session[:current_account_id].present?
      Account.find(session[:current_account_id])
    end
  end

  def current_role
    if current_account.present?
      current_account.account_users.find_by(user: current_user).admin_role
    else
      AccountUsers::DEFAULT_USER_ROLE
    end
  end
end 

您可以使用 FactoryBotRails 创建普通用户

let(:user) { create :user }

并像这样存根当前用户

allow_any_instance_of(AdminController).to receive(:current_user).and_return(user)