我正在尝试运行 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