Тест Rspec с устройством входа в систему, работающим только один раз - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь проверить некоторые виды с помощью devise и rspec.В этом тесте первый проходит.Второй - перенаправление на страницу входа.

Логин_ работает только в первом тесте.Если я добавлю 3 теста, последний провалится и первые 2 пройдены.Если я изменяю :all на :each, первый сбой, а второй проходит

require 'rails_helper'

RSpec.describe StoresController, type: :controller do
    context "with valid params" do
        user = FactoryBot.build(:user)
        before(:all) do
            login_as(user, :scope => :user)
        end

        it "renders the index template" do
            get :index
            expect(response).to render_template("index")
        end

        it "creates a new store" do
            get :new
            expect(response).to render_template("new")
        end

    end
end

1 Ответ

0 голосов
/ 24 сентября 2018

before(:all) будет работать только один раз.Вот почему только первый проход теста.

Используйте before(:each) или просто before do

Кроме того, для каждого теста должна быть создана пользовательская переменная, то есть она должна быть объявлена ​​внутриблок:

before do
  user = FactoryBot.create(:user)
  login_as(user, :scope => :user)
end
...