ruby RSpec存根控件current_user在控制器中

zi8p0yeb  于 2022-11-22  发布在  Ruby
关注(0)|答案(2)|浏览(117)

目前我正在用rspec编写一些控制器测试。控制器需要用户登录才能使用。
if @current_user.nil?执行其他操作重定向
我目前在如何存根本地变量current_user方面有一些问题。

1hdlvixo

1hdlvixo1#

为什么不让rspec登录到您的测试系统,而不是stubbing current_user呢?您可以执行如下操作:

describe "Req #5 - login" do
    it 'loads the login page' do
      get '/login'
      expect(last_response.status).to eq(200)
    end

    it 'loads the user index after login' do
      user = User.create(:username => "Raptor", :password => "Raptor")
      params = {
        :username => "Raptor",
        :password => "Raptor"
      }
      post '/login', params
      follow_redirect!
      expect(last_response.body).to include("Home Page for: Raptor")
    end
  end
lymgl2op

lymgl2op2#

您可以像这样存根控制器的current_user方法:

let(:current_user) { User.create(...) }

before do
  allow(@controller).to receive(:current_user).and_return(current_user)
end

相关问题