У меня есть действия в моем приложении 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, так как здесь не настроен плагин сеанса.
Я мог бы нажимать действия, которые устанавливают нужное мне состояние сеанса, но тогда я добавляю тестовые хуки в свой производственный код, что кажется далеко не идеальным.
Каков рекомендуемый способ сделать это?
Conn.fetch_session. Проверьте этот ответ для реализации - person AbM   schedule 19.11.2015