Rspec 测试控制器用户不会保持登录状态



我正在尝试运行 2 个测试,我需要登录。

RSpec.describe MealsController, type: :controller do
before(:all) do 
Location.create! name: 'test'
@user = create(:user, :admin)
@client1 = create(:client, user_id: @user.id)
@client2 = create(:client)
login_as @user, scope: :user
end
describe "GET index" do 
it 'expects successfull index load' do
get :index
expect(response.status).to eq(200)
end
it 'expects order to be' do
get :index, {:params => { :client_id => @client2.id }}
expect(session[:orderClient]).to eq(@client2.id)
end
end
end

第一个测试成功,但第二个测试失败,响应如下:

Failure/Error: redirect_to new_user_session_path, notice: "You must be signed in to access this page."

我不明白为什么get :index在第一次测试中有效,而在第二次测试中不起作用。 我尝试将行login_as @user, scope: :user直接添加到第二个测试中,但发生了相同的错误。

before(:all)只运行一次,在描述块的开头。尝试改用before(:each),它将在每个规范(或it)之前运行。

或者,由于它是默认值,只需before do

最新更新