Rspec存根current_user

时间:2018-12-08 01:40:27

标签: ruby rspec

当前,我正在用rspec编写一些控制器测试。控制器要求用户登录后才能使用。

如果@ current_user.nil?  做点什么 其他  重定向

我目前在如何对局部变量current_user进行存根方面遇到问题。

2 个答案:

答案 0 :(得分:0)

为什么不使用rspec登录到测试系统而不是对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

答案 1 :(得分:0)

您可以像下面这样对控制器的current_user方法进行存根:

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

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