Как установить значения в сеансе сеанса перед выполнением запроса в тестах

У меня есть действия в моем приложении Phoenix/Plug, которые ведут себя по-разному в зависимости от состояния сеанса. Я хочу проверить это поведение, но я не уверен, как установить сеанс перед выполнением запроса.

Вот пример того, что я хочу сделать:

test "GET index when not signed", %{conn: conn} do
  conn = get conn, item_path(conn, :index)
  assert html_response(conn, 302)
end

test "GET index when signed in", %{conn: conn} do
  conn = conn |> put_session(:current_user, 1)
  conn = get conn, item_path(conn, :index)
  assert html_response(conn, 200)
end

Обратите внимание на попытку установить сеанс во втором тесте.

Это не работает, и я получаю сообщение об ошибке, подобное этому:

** (ArgumentError) session not fetched, call fetch_session/2

Но я не могу использовать fetch_session/1, так как здесь не настроен плагин сеанса.

Я мог бы нажимать действия, которые устанавливают нужное мне состояние сеанса, но тогда я добавляю тестовые хуки в свой производственный код, что кажется далеко не идеальным.

Каков рекомендуемый способ сделать это?


person lpil    schedule 18.11.2015    source источник
comment
Вам нужно позвонить Conn.fetch_session. Проверьте этот ответ для реализации   -  person AbM    schedule 19.11.2015
comment
Проголосуйте за закрытие, так как это дубликат.   -  person Onorio Catenacci    schedule 19.11.2015