バージョン情報
- elixir 1.6.4
- phoenix 1.3.3
本題
phoenixのデフォルトのテスト方法でcontrollerのテストを書くときに、セッションを扱い時がある。その方法を調べたときにちょっと古い記事を拾ってしまうと、いろいろと大変な手順が見つかる。
だけれど、Plug.Testモジュールのinit_test_sessionを使ったら楽だったという話。
いろいろと省いたコード例は次のような感じ。
# test/example_app_web/session_controller_test.exs
defmodule ExampleAppWeb.SessionControllerTest do
use Plug.Test
test "GET /", %{conn: conn} do
conn = conn
|> init_test_session(%{user_id: 1})
|> get("/")
assert redirected_to(conn) =~ "/mypage"
end
end
/
にアクセスしたときに、ログインしていれば/mypage
にリダイレクトするコントローラのテストである。