Как программно завершить работу экземпляра ExpressJS для тестирования?

Я пытаюсь понять, как завершить работу экземпляра Экспресс. По сути, мне нужен обратный вызов .listen (port) - как заставить сервер Express ОСТАНОВИТЬ прослушивание, освободить порт и аккуратно завершить работу?

Я знаю, что это может быть странным запросом, так вот контекст; может быть, есть другой способ подойти к этому, и я ошибаюсь в этом.Я пытаюсь настроить платформу тестирования для своего приложения socket.io/nodejs. Это одностраничное приложение, поэтому в моих сценариях тестирования (я использую Mocha , но на самом деле это не имеет значения) я хочу иметь возможность запускать сервер, запускать тесты на нем и затем выключите сервер. Я могу обойти это, предположив, что либо сервер включен до начала теста, либо если один из тестов запускает сервер и каждый последующий тест предполагает, что он работает, но это действительно беспорядочно. Я бы предпочел, чтобы каждый тестовый файл запускал экземпляр сервера с соответствующими настройками, а затем выключал этот экземпляр после завершения тестов. Это означает, что при запуске теста нет никаких странных зависимостей, и все чисто. Это также означает, что я могу проводить тестирование при запуске / завершении работы.

Итак, есть какие-нибудь советы, как это сделать? Я думал о том, чтобы вручную запускать исключения, чтобы сбить его, но это кажется беспорядочным. Я покопался в документации и исходниках Express, но, похоже, не нашел никакого метода, который отключил бы сервер. Для этого также может быть что-то в socket.io, но поскольку сервер сокетов просто присоединен к серверу Express, я думаю, что это должно происходить на уровне express.

90
задан drewww 28 December 2011 в 17:11
поделиться