1

Background

I have a specific test where I need to spawn a cowboy server listening on port 8082 that returns some static responses.

Objective

Normally I would spin up a cowboy process in my application.ex file like this:

   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

But the code I am working on is not an application, so I can't do that.

My objective is to use the setup_all callback of ExUnit to do this, however I don't know how to do it or if it is possible.

Questions

  1. How can I start a cowboy server in ExUnit?
Flame_Phoenix
  • 16,489
  • 37
  • 131
  • 266

1 Answers1

2

After some digging around, I found that there is a library called bypass that already covers this use case.

This solution was also confirmed by Elixir's community, which seems to suggest it as well: https://elixirforum.com/t/how-to-spawn-a-cowboy-server-in-a-test/36686

Flame_Phoenix
  • 16,489
  • 37
  • 131
  • 266