我正在尝试为节点应用程序运行功能测试。
在我的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- 调用你的测试脚本
笔记:
- 若要开发测试,需要处理两个终端,每个终端用于上述终端。
- 我假设您在端口 8080 上运行
- 该软件包还处理两个进程(节点和摩卡(在成功和失败的情况下的终止,因此不需要(
posttest:ci
、--exit
等(。 - 没有必要使用
web-server
package.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 工具一样,
对于本地使用不是必需的。