繁体   English   中英

Elixir/Plug/Phoenix:调用暂停并不会阻止下游插件在测试期间被调用

[英]Elixir/Plug/Phoenix: Calling halt doesn't stop downstream plugs from getting invoked during test

如果我启动我的 phoenix 应用程序的一个实例,并通过请求点击它,我的插件将适当地停止。 但是,在测试环境中执行相同操作时,halt 不会阻止下游插件被调用,这会导致我的测试失败。 我认为问题可能来自我在测试期间调用路由器的方式。 这是我正在使用的辅助函数,它是从 phoenix 框架本身的一个类似函数中大量借用的:

def call(router, verb, path, params \\ nil, headers \\ []) do
    add_headers(conn(verb, path, params), headers)
    |> Plug.Conn.fetch_params
    |> Plug.Parsers.call(parsers: [Plug.Parsers.JSON],
                    pass: ["*/*"],
                    json_decoder: Poison)
    |> router.call(router.init([]))
  end

关于为什么像这样调用我的路由器会导致停止工作的任何想法?

编辑:所以我升级到 Phoenix 0.13.1 以便使用他们的新端点测试模块而不是我推出的助手。 我会报告这是否解决了问题。

halt仅在插头管道内起作用。 如果您是手动管道,那么您将需要手动检查暂停。

老实说,我会放弃您当前的管道,而只是从您的测试中调用实际端点。 端点管道非常快,您应该不会真正看到任何减速。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM