如何在测试中生成牛仔服务器?
How to spawn a cowboy server in a test?
背景
我有一个特定的测试,我需要生成一个监听端口 8082 的牛仔服务器,returns 一些静态响应。
Objective
通常我会在我的 application.ex
文件中启动一个 cowboy 进程,如下所示:
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
但是我正在处理的代码不是应用程序,所以我不能那样做。
我的 objective 是使用 ExUnit 的 setup_all
回调来执行此操作,但是我不知道该怎么做,也不知道是否可行。
问题
- 如何在 ExUnit 中启动牛仔服务器?
经过一番挖掘,我发现有一个名为 bypass
的库已经涵盖了这个用例。
这个解决方案也得到了 Elixir 社区的确认,似乎也暗示了它:https://elixirforum.com/t/how-to-spawn-a-cowboy-server-in-a-test/36686
背景
我有一个特定的测试,我需要生成一个监听端口 8082 的牛仔服务器,returns 一些静态响应。
Objective
通常我会在我的 application.ex
文件中启动一个 cowboy 进程,如下所示:
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
但是我正在处理的代码不是应用程序,所以我不能那样做。
我的 objective 是使用 ExUnit 的 setup_all
回调来执行此操作,但是我不知道该怎么做,也不知道是否可行。
问题
- 如何在 ExUnit 中启动牛仔服务器?
经过一番挖掘,我发现有一个名为 bypass
的库已经涵盖了这个用例。
这个解决方案也得到了 Elixir 社区的确认,似乎也暗示了它:https://elixirforum.com/t/how-to-spawn-a-cowboy-server-in-a-test/36686