我可以手动构建一个conn
然后像函数一样调用它们吗?如果你不明白“他们”是什么意思,请看下面的代码。
例如,定义一条路线/ping
get "/ping" do
send_resp(conn, 200, "pong")
end
我知道可以用中的conn
函数来完成use Plug.Test
,但是它是基于HTTP Client,而不是运行时函数调用,效率太低。
正如您所说,标准方法是Plug.Test.conn/3
用于构建一个%Plug.Conn{}
结构,该结构将导致该路由被调用。
所有插件都有一个call/2
功能,即在运行时可用的功能。
例子:
conn = Plug.Test.conn(:get, "/ping", "")
conn = YourModule.Router.call(conn, [])
get
宏在编译时编译为私有match/3
函数,该函数本身由call/2
函数调用,也需要conn
结构体。因此,除非您从路由器模块内部调用,否则您必须使用call/2
回调进行运行时测试。不使用 HTTP 客户端 - 它只是生成一个结构。我认为您对效率低下的担忧是没有根据的。match/3
Plug.Test.conn/3