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

时间:2017-08-27 17:10:47

标签: terminal elixir phoenix-framework plug

iex -S mix phx.server

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

MyAppWeb.Router.Helpers.confirmation_url(%Plug.Conn{}, :edit, "12345")

但我有错误:

Phoenix endpoint not found in %{}

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

3 个答案:

答案 0 :(得分:10)

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

MyAppWeb.Router.Helpers.confirmation_url(MyAppWeb.Endpoint, :edit, "12345")

编辑:如果你想创建一个与路由器助手一起使用的虚拟连接器,从凤凰1.3开始,%{phoenix_endpoint: MyAppWeb.Endpoint}中的conn.private值就足够了:

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

答案 1 :(得分:4)

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

您可以找到函数here并直接使用它或按照其实现进行调整,然后根据需要进行调整。

答案 2 :(得分:-1)

为什么要花时间在控制台上进行测试。只需编写一个测试并使用' ConnCase'它为您提供免费的测试中的conn结构。在开发过程中,您还可以使用"测试手表"包将在每次文件更改时重新运行测试。

一旦你切换到tdd,就会有更多的时间来保存这样的问题