如何等待服务器从 npm 脚本启动完成?



我正在尝试为节点应用程序运行功能测试。

在我的package.json中,我有以下脚本:

"scripts": {
"web-server": "NODE_ENV=test node app.js &",
"test": "npm run web-server && mocha ./tests/functional/*.js --exit",
"posttest": "pkill -f node"
}

但是在运行它时,测试会在服务器完成启动之前运行。

如何等待服务器?

我今天找到了等待,喜欢它的方法。它只执行等待,而不执行命令启动等其他操作。

将其与concurrently一起使用,如下所示:

"scripts": {
"xxx": "concurrently -n server,mocha "npm run web-server" "npx wait-on http://localhost:8080 && npx mocha ..."",

想向新访客提及。我认为wait-on目前是标题问题最合适的答案。

据我了解,
您想运行本地服务器,一旦服务器启动,应该触发测试周期。

我建议为您的解决方案使用包"启动服务器和测试">声音套件,NPM 包页面在这里

让我们获取您当前的package.json脚本对象,并重写它们。
启动脚本和测试脚本是轻松维护应用所需的两个基本脚本。
start- 启动你的应用程序(我建议使用 nodemon 或 pm2(
test- 调用你的测试脚本

笔记:

  1. 若要开发测试,需要处理两个终端,每个终端用于上述终端。
  2. 我假设您在端口 8080 上运行
  3. 该软件包还处理两个进程(节点和摩卡(在成功和失败的情况下的终止,因此不需要(posttest:ci--exit等(。
  4. 没有必要使用web-serverpackage.json脚本末尾提到的子进程(&(。

这是新的脚本对象,来自我的 POV

"scripts": {
"start": "node app.js",
"test": "NODE_ENV=test mocha ./tests/functional/*.js",
"test:ci": "NODE_ENV=test start-server-and-test start "http://localhost:8080" test"
}

现在,从您的 CLI 中:

npm run test:ci

ci后缀提到此过程是完全自动化
的预计您必须为真正的 CI 环境定义 CI=true,就像所有 CI 工具一样,
对于本地使用不是必需的。

相关内容

  • 没有找到相关文章

最新更新