Как запустить тестовый файл после запуска сервера с помощью npm-скриптов?

Я хотел использовать возможности npm script и попытался создать команду для запуска тестов моего API. В основном мне нужно запустить API и выполнить некоторые HTTP-запросы. У меня есть тесты в JS-файле, назовем его automatic-test.js, и я хотел запустить API, а затем запустить эти тесты.

В моем package.json я попробовал этот вызов:

"scripts": {
    "start": "node ./bin/www",
    "test": "npm start & node test/automatic-test.js"
}

Команда test запускает сервер API, но не запускает файл тестов. Я попытался изменить & на &&, || и ; (здесь), но ни один из них не заставляет командную строку достигать второй части команды. Я пытался даже написать содержимое команды start в начале команды test, но проблема та же.

Я мог бы найти обходной путь, запускающий сервер из тестового файла (здесь), require('/route/to/server/file'), оставив команду test так же, как node test/automatic-test.js, но мне кажется, что я обманываю. Что я должен сделать, чтобы это утверждение работало так, как я хочу?

npm start &/&&/||/; node test/automatic-test.js

Версия узла: v10.15.0

Версия нпм: 6.4.1

РЕДАКТИРОВАТЬ: эти тесты являются самым первым проектом будущих реальных тестов и представляют собой просто набор HTTP-запросов, которые должны возвращать только очень небольшой набор результатов, они не являются надлежащими тестами (оценки, мокко и т. д.)


person J. Maria    schedule 17.09.2019    source источник


Ответы (2)


По умолчанию узел не предоставляет возможность тестирования напрямую, вам нужно добавить пакет, например mocha.

Пожалуйста, следуйте документам.

person Rohit Kumar    schedule 17.09.2019
comment
Я только что добавил редактирование, объясняющее более подробно об этих тестах, которые я пытаюсь выполнить. Заранее спасибо. - person J. Maria; 17.09.2019
comment
npm install --save-dev start-server-and-test используйте этот модуль, тогда вы сможете запустить тест после запуска сервера - person Rohit Kumar; 17.09.2019
comment
Вы можете проверить это для справки docs.cypress.io/ гиды/гиды/ - person Rohit Kumar; 17.09.2019
comment
Всегда добро пожаловать чувак - person Rohit Kumar; 23.09.2019

Имхо, пакет npm concurrently довольно приятный.

Он утверждает, что "Как npm run watch-js & npm run без просмотра, но лучше", и поскольку ваш вопрос начался с & связывания команд...

Вот пример из package.json:

    "test:dev": "concurrently --restart-tries 10 --names rollup,sirv \"rollup --config rollup.test.config.js -w\" \"sirv test --port 3000 --single --dev\"",

Он печатает имена ("rollup", "sirv") на выходе, чтобы стало ясно, какой процесс что сделал.

Я не могу сравнивать с start-server-and-test, о котором уже упоминалось.

person akauppi    schedule 04.01.2020