Phoenix:如何在控制台中获得conn%Plug.Conn {}

And*_*yKo 7 terminal elixir phoenix-framework plug

iex -S mix phx.server
Run Code Online (Sandbox Code Playgroud)

我想在iex终端中做一些快速测试,但是有些函数需要struct%Plug.Conn {}作为参数,例如我想得到表达式的结果:

MyAppWeb.Router.Helpers.confirmation_url(%Plug.Conn{}, :edit, "12345")
Run Code Online (Sandbox Code Playgroud)

但我有错误:

Phoenix endpoint not found in %{}
Run Code Online (Sandbox Code Playgroud)

有一种简单的方法在控制台中获取conn结构吗?

Dog*_*ert 10

路由器帮助程序函数接受conn或端点模块作为第一个参数.如果要生成不带conn的URL,可以传递应用程序的端点模块:

MyAppWeb.Router.Helpers.confirmation_url(MyAppWeb.Endpoint, :edit, "12345")
Run Code Online (Sandbox Code Playgroud)

编辑:如果你想创建一个与路由器助手一起使用的虚拟连接器,看起来它足以%{phoenix_endpoint: MyAppWeb.Endpoint}conn.privatePhoenix 1.3中放入一个值:

conn = %Plug.Conn{private: %{phoenix_endpoint: MyAppWeb.Endpoint}}
MyAppWeb.Router.Helpers.confirmation_url(conn, :edit, "12345")
Run Code Online (Sandbox Code Playgroud)


Phi*_*ipp 5

ConnCase 测试助手用于Phoenix.ConnTest.build_conn()引导控制器测试的连接结构。

您可以在此处找到该函数然后直接使用它或遵循其实现并根据需要对其进行调整。