Phoenix:如何从控制台测试控制器操作?

时间:2018-10-21 14:55:17

标签: terminal elixir phoenix-framework plug

我创建了一个新的控制器动作,我想从控制台进行测试以确保其正常工作。

在终端中运行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

1 个答案:

答案 0 :(得分:1)

您可以使用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{...}