我写了一个小插件,接受一个操作列表作为选项。当前调用的操作位于此列表中时,插件的行为将有所不同。
为了测试这个,我需要在单元测试中设置动作。这可能吗?我在文档中找不到任何内容。
这是插件文档中提供的简短示例。
defmodule MyPlugTest do
use ExUnit.Case, async: true
use Plug.Test
@opts AppRouter.init([])
test "returns hello world" do
# Create a test connection
conn = conn(:get, "/hello")
# Invoke the plug
conn = AppRouter.call(conn, @opts)
# Assert the response and status
assert conn.state == :sent
assert conn.status == 200
assert conn.resp_body == "world"
end
end
答案 0 :(得分:1)
我会考虑在控制器测试中对这些进行集成测试。由于conn.private存储是专为图书馆设计的,因此可随时更改。
如果您不担心凤凰城的变化,那么您可以这样做:
conn =
conn(:get, "/hello")
|> put_private(conn, :phoenix_action, :index)
|> AppRouter.call(conn, [:index])