Смена Rails сессии для тестов с Capybara - PullRequest
0 голосов
/ 27 февраля 2020

Мне нужно протестировать страницу в моем приложении Rails 5.2, которая отображает текущую корзину, если пользователь не вошел в систему с помощью теста системы Capybara. Приложение извлекает корзину с помощью card_id, сохраненного в сеансе рельсов (session[:cart_id] = @cart.id)

Мой тест выглядит следующим образом:

require 'application_system_test_case'

class CartUiTest < ApplicationSystemTestCase
  def setup
    @cart = create(:cart)
  end

  test 'show cart also if user is not logged' do
    visit edit_cart_path

    assert_text "Some text"
  end
end

Как установить сеанс в этом тесте? Я пробовал гем rack_session_access , но я ищу другое решение, которое не использует этот драгоценный камень, потому что он конфликтует с другими тестами.

1 Ответ

0 голосов
/ 28 февраля 2020

Вы не должны иметь прямой доступ к сеансу в системных тестах. Если вы хотите, чтобы у пользователя был сеанс, который вышел из системы, сначала войдите в систему, а затем выйдите из него. Таким образом, браузер будет иметь повар ie, который соответствует сеансу выхода из системы, как настоящий пользователь.

...