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中获取用户要复杂得多。