Я использую devise для управления процессом аутентификации.Сейчас я занимаюсь разработкой интеграционных тестов для своего приложения, начиная с процесса входа в систему.
RSpec.describe 'sign in', type: :feature, js: true do
let!(:user) { create(:user)}
scenario 'sign in with correct credentials' do
visit new_user_session_path
fill_in 'Login', with: 'email@email.com'
fill_in 'Password', with: 'password'
click_on 'Sign in'
expect(current_path).to eq(signed_in_path)
end
end
После того, как в приведенном выше тесте нажимается кнопка «Войти», сеанс создается, как предполагалось, и затем пользовательперенаправлен на signed_in_path
.После этого перенаправления вызывается контроллер для этого пути, и он имеет before_action :authenticate_user
.
Проблема в том, что после перенаправления этот метод authenticate_user
больше не распознает current_user
, что делает егоперенаправить обратно на страницу входа и вызвать сбой теста.
Что вызывает потерю сеанса?Как я могу это исправить?
PS: я включил config.include Devise::Test::IntegrationHelpers, type: :feature
в свой rails_helper.rb
, и помощник sign_in
прекрасно работает, но я не должен использовать это для проверки, если знак страницыработает правильно.