【问题标题】:How to spawn a cowboy server in a test?如何在测试中生成牛仔服务器?
【发布时间】:2021-01-08 18:55:58
【问题描述】:

背景

我有一个特定的测试,我需要生成一个监听端口 8082 的牛仔服务器,它返回一些静态响应。

目标

通常我会在我的application.ex 文件中启动一个牛仔进程,如下所示:

   def start(_type, args) do
     children = children([{Cowboy, scheme: :http, plug: MyServer, options: [port: 8082]}])

     opts = [strategy: :one_for_one, name: MyApp.Supervisor]
     Supervisor.start_link(children, opts)
   end

但我正在处理的代码不是应用程序,所以我不能这样做。

我的目标是使用 ExUnit 的 setup_all 回调来执行此操作,但我不知道该怎么做或是否可行。

问题

  1. 如何在 ExUnit 中启动牛仔服务器?

【问题讨论】:

  • 你不能把牛仔的Supervisor.start_link 放在你的setup_all 中吗?

标签: elixir cowboy ex-unit


【解决方案1】:

经过一番挖掘,我发现有一个名为bypass 的库已经涵盖了这个用例。

这个解决方案也得到了 Elixir 社区的确认,似乎也建议这样做:https://elixirforum.com/t/how-to-spawn-a-cowboy-server-in-a-test/36686

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-28
    • 2020-08-22
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 2016-05-10
    • 1970-01-01
    相关资源
    最近更新 更多