我想利用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服务器,但是它不运行测试文件。我尝试通过&
,&&
和||
(here)来更改;
,但是没有一个使命令行到达命令的第二部分。我甚至尝试在start
的开头写上test
命令的内容,但是问题是相同的。
我可以找到一种解决方法,从测试文件(here)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请求,它们仅应返回很少的结果集,它们不是适当的测试(评估,摩卡咖啡等)。
答案 0 :(得分:1)
默认情况下,默认节点不提供直接测试的功能,您必须添加mocha之类的软件包
请遵循文档。
答案 1 :(得分:0)
concurrently
npm软件包非常不错,恕我直言。
它声称是“像npm run watch-js和npm runless-watchless但更好” ,由于您的问题以&
开头的命令开头...
下面是一个package.json
的示例:
"test:dev": "concurrently --restart-tries 10 --names rollup,sirv \"rollup --config rollup.test.config.js -w\" \"sirv test --port 3000 --single --dev\"",
它将名称(“汇总”,“ sirv”)打印到输出,以便清楚地知道哪个进程做了什么。
我无法与已经提到的start-server-and-test
进行比较。