Phoenix:如何从控制台测试控制器操作?
Phoenix: How to test controller actions from the console?
我创建了一个新的控制器操作,我想从控制台对其进行测试以确保其正常工作。
如何在终端中执行 运行 iex -S mix phx.server
之后的操作?在我看来,为了做到这一点,我需要创建一个 conn
结构以及一个 user
结构(因为我使用的是 Guardian)。
我的控制器代码如下所示:
defmodule HelloWeb.AssetController do
use HelloWeb, :controller
use Guardian.Phoenix.Controller
action_fallback HelloWeb.FallbackController
def new_action(conn, %{"id" => id}, user, _claims) do
# Stuff I want to test
end
# Other actions omitted
end
如何从 IEx 测试 new_action
?
您可以使用 phoenix 测试助手来实现类似 iex
中的 ExUnit 测试所做的事情:
iex(22)> conn = Phoenix.ConnTest.build_conn() |>
...(22)> Phoenix.Controller.put_view(HelloWeb.AssetView)
%Plug.Conn{...}
# This assumes you have at least one user created in the dev database
iex(23)> [user | _] = HelloWeb.Schemas.User |> HelloWeb.Repo.all
iex(23)> HelloWeb.AssetController.new_action(conn, %{"id" => some_id}, user, [])
# You can inspect this conn to see if what's rendered is OK
%Plug.Conn{...}
我创建了一个新的控制器操作,我想从控制台对其进行测试以确保其正常工作。
如何在终端中执行 运行 iex -S mix phx.server
之后的操作?在我看来,为了做到这一点,我需要创建一个 conn
结构以及一个 user
结构(因为我使用的是 Guardian)。
我的控制器代码如下所示:
defmodule HelloWeb.AssetController do
use HelloWeb, :controller
use Guardian.Phoenix.Controller
action_fallback HelloWeb.FallbackController
def new_action(conn, %{"id" => id}, user, _claims) do
# Stuff I want to test
end
# Other actions omitted
end
如何从 IEx 测试 new_action
?
您可以使用 phoenix 测试助手来实现类似 iex
中的 ExUnit 测试所做的事情:
iex(22)> conn = Phoenix.ConnTest.build_conn() |>
...(22)> Phoenix.Controller.put_view(HelloWeb.AssetView)
%Plug.Conn{...}
# This assumes you have at least one user created in the dev database
iex(23)> [user | _] = HelloWeb.Schemas.User |> HelloWeb.Repo.all
iex(23)> HelloWeb.AssetController.new_action(conn, %{"id" => some_id}, user, [])
# You can inspect this conn to see if what's rendered is OK
%Plug.Conn{...}