Хорошо, я решил эту проблему.
Похоже, что minitest не запускает сервер приложений независимо от того, какой драйвер вы выберете.Тем не менее, вы можете запустить собственный HTTP-сервер для прослушивания уведомлений из внешних источников и пересылать их в тестируемое приложение.
Для этого вам потребуется:
require 'webrick'
Настройка HTTP-сервера (регистрация отключена)чтобы избежать беспорядка):
server = WEBrick::HTTPServer.new(
Port: 3000,
Logger: WEBrick::Log.new("/dev/null"),
AccessLog: []
)
Укажите, как обрабатывать входящие HTTP-запросы.В моем случае будут только запросы GET, но важно перенаправить их с оригинальными заголовками:
server.mount_proc '/' do |req, resp|
headers = {}
req.header.each { |k,v| v.each { |a| headers[k] = a } }
resp = get req.path, {}, headers
end
Запустить HTTP-сервер в отдельном потоке (он блокирует поток, в котором он выполняется):
@t = Thread.new {
server.start
}
Minitest.after_run do
@t.kill
@t.join
end
Timeout.timeout(5) do
sleep 0.1 until server.status == :Running
end