在
iex -S mix phx.server
我想在iex终端中做一些快速测试,但是有些函数需要struct%Plug.Conn {}作为参数,例如我想得到表达式的结果:
MyAppWeb.Router.Helpers.confirmation_url(%Plug.Conn{}, :edit, "12345")
但我有错误:
Phoenix endpoint not found in %{}
是否有一种在控制台中获取conn结构的简单方法?
答案 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,就会有更多的时间来保存这样的问题