8

iex -S mix phx.server

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

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

但我有错误:

Phoenix endpoint not found in %{}

有没有一种在控制台中获取 conn struct 的简单方法?

4

3 回答 3

14

路由器辅助函数接受 conn 或端点模块作为第一个参数。当您想要生成没有连接的 URL 时,可以传递应用程序的端点模块:

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

编辑:如果您想创建一个与路由器助手一起使用的虚拟 conn,似乎从 Phoenix 1.3开始输入一个%{phoenix_endpoint: MyAppWeb.Endpoint}值就足够了:conn.private

conn = %Plug.Conn{private: %{phoenix_endpoint: MyAppWeb.Endpoint}}
MyAppWeb.Router.Helpers.confirmation_url(conn, :edit, "12345")
于 2017-08-27T17:13:52.037 回答
5

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

您可以在此处找到该功能并直接使用它或按照其实现并根据需要对其进行调整。

于 2017-08-27T19:17:47.843 回答
-1

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

一旦您切换到 tdd,您将节省更多时间来解决此类问题

于 2017-08-27T18:14:55.140 回答