Terminal Phoenix:如何从控制台测试控制器操作?
我已经创建了一个新的控制器操作,我想从控制台测试它,以确保它正常工作 在终端中运行Terminal Phoenix:如何从控制台测试控制器操作?,terminal,elixir,phoenix-framework,plug,Terminal,Elixir,Phoenix Framework,Plug,我已经创建了一个新的控制器操作,我想从控制台测试它,以确保它正常工作 在终端中运行iex-S mix phx.server后,如何执行操作?在我看来,为了做到这一点,我需要创建一个connstruct以及userstruct(因为我使用的是Guardian) 我的控制器代码如下所示: defmodule HelloWeb.AssetController do use HelloWeb, :controller use Guardian.Phoenix.Controller acti
iex-S mix phx.server
后,如何执行操作?在我看来,为了做到这一点,我需要创建一个conn
struct以及user
struct(因为我使用的是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测试新动作?您可以使用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{...}
使用
ExUnit
测试它有什么问题?另外,如果您希望它是交互式的,只需curl
结束点。@AlekseiMatiushkin我想要一种交互式的方式来完成它,它排除了ExUnit
。我同意我也可以使用curl
,但随后我必须首先进行身份验证并传递令牌,对我来说,这似乎比在公认的解决方案中从repo中获取用户要复杂得多。