如何在使用 npm 脚本启动服务器后 运行 测试文件?

How to run test file after launching server using npm scripts?

我想利用 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 服务器,但不会 运行 测试文件。我尝试将 & 更改为 &&||; (),但 none 使命令行到达第二个命令的一部分。我试过把start命令的内容写在test的开头,但问题是一样的

我可以找到从测试文件 ()、require('/route/to/server/file') 启动服务器的解决方法,让 test 命令就像 node test/automatic-test.js 一样,但我觉得也许我在作弊。我应该怎么做才能让这个声明如我所愿?

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

节点版本:v10.15.0

Npm 版本:6.4.1

编辑:这些测试是未来真实测试的初稿,只是一堆 HTTP 请求,应该只是 return 一小部分结果,它们不是适当的测试(评估、摩卡等)

默认情况下节点不提供直接测试的能力,你必须添加像 mocha

这样的包

请按照文档进行操作。

恕我直言,concurrently npm 包非常棒。

它声称是 "Like npm run watch-js & npm run watch-less but better" 并且由于您的问题以 & 绑定命令开始...

这是来自 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 进行比较。