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

时间:2019-09-17 11:25:23

标签: javascript node.js api npm 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服务器,但是它不运行测试文件。我尝试通过&&&||here)来更改;,但是没有一个使命令行到达命令的第二部分。我甚至尝试在start的开头写上test命令的内容,但是问题是相同的。

我可以找到一种解决方法,从测试文件(hererequire('/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请求,它们仅应返回很少的结果集,它们不是适当的测试(评估,摩卡咖啡等)。

2 个答案:

答案 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进行比较。