Предполагается, что у меня есть некоторые модульные тесты, которые проверяют веб-сервер. По причинам, которые я не хочу обсуждать здесь (вне рамок ;-)), каждый тест нуждается в недавно запущенном сервере.Завершение HTTP-сервера Node.js в модульном тесте
Пока я не посылаю запрос на сервер, все в порядке. Но как только я это сделаю, вызов функции http: close
работает не так, как ожидалось, поскольку все сделанные запросы приводят к поддерживаемым соединениям, поэтому сервер ждет 120 секунд до фактического закрытия.
Конечно, это неприемлемо для запуска тестов.
На данный момент, только решения я хотел бы видеть был либо
- установка Keep-Alive таймаута
0
, поэтому вызовclose
фактически закрывает сервер, - или начать каждый сервер на другом порту, хотя с этим трудно справиться, когда у вас много тестов.
Любые другие идеи о том, как справиться с этой ситуацией?
PS: Я был спросил How do I shutdown a Node.js http(s) server immediately? некоторое время назад, и нашли жизнеспособный способ работать вокруг него, но, как кажется, этот способ действительно надежно не работает в любом случае, как я получаю странные результаты, время от времени ,
Как вы начинаете сервер в первую очередь? Вы используете сервер node.js из узла или из другого скрипта? – jsalonen
Также я понимаю, что у вас могут быть строгие требования, но вам действительно нужно перезагрузить сервер после каждого теста? Я имею в виду, вы могли бы реорганизовать что-то таким образом, чтобы вы могли запускать несколько тестов на одном сервере? – jsalonen
Сервер запускается программно с использованием Node.js, используя обычный материал 'http.createServer.listen'. И, к сожалению, да, я * DO * должен иметь новый экземпляр для каждого теста: - / –