我有两种类型的测试套件 - 普通和覆盖。
目前,我通过npm test
允许其中一个,并通过npm start
允许其中一个:
"scripts": {
"test": "node scripts/run-truffle-tests.js",
"start": "node scripts/run-sol-coverage.js"
}
我感觉npm start
最初并未被指定用于此目的。
有没有更好的方法来实现这个?
我正在考虑将参数传递给npm test
,但我不确定npm
是否会将其传递给设置为调用的脚本。
谢谢!
答案 0 :(得分:3)
添加更多scripts
。
我通常使用tests
进行实际的,完整的单次运行单元测试,以便使用CI和其他脚本进行变体处理:
{
"scripts": {
"test": "node scripts/run-truffle-tests.js && npm run test:coverage",
"test:continuous": "karma start some.config --run-continuous",
"test:coverage": "node scripts/run-sol-coverage.js"
"start": "node index.js"
}
}
您还可以使用&&
链接命令,这将导致脚本按顺序运行,并且“总”错误代码将传播。换句话说,使用我上面的test
,将运行单元测试和覆盖测试。如果它们中的任何一个返回非零退出代码,则npm将认为整个测试过程失败。
请注意,对于未完全命名为start
和test
的自定义脚本以及此处文档中找到的其他指定脚本:npm#scripts,必须使用
npm run scriptname
而不仅仅是
npm scriptname
因此,在上面的示例中,您将使用以下方法测试覆盖率:
npm run test:coverage
此外,:
只是一个惯例。据我所知,这并不特别。
此外,您可以
将[argument]传递给设置为调用的脚本
每当使用npm test
时,基本上发生的是npm
运行在package.json
的{{1}}中设置的任何字符串值作为一个过程,就好像你已经将自己的String键入shell。然后它查看返回代码,如果它为0,则报告一切正常;如果它不为零,则会输出错误。