Пользователь контроллера тестирования Rspec не останется в системе - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть 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 непосредственно ко второму тесту, и произошла та же ошибка.

1 Ответ

0 голосов
/ 23 февраля 2019

before(:all) запускается только один раз, в начале вашего блока описания.Попробуйте вместо этого использовать before(:each), который будет запускаться перед каждой спецификацией (или it).

Или, поскольку это значение по умолчанию, просто before do

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...