通过npm命令行进行测试

时间:2018-06-08 18:34:04

标签: node.js npm

我有两种类型的测试套件 - 普通和覆盖。

目前,我通过npm test允许其中一个,并通过npm start允许其中一个:

  "scripts": {
    "test": "node scripts/run-truffle-tests.js",
    "start": "node scripts/run-sol-coverage.js"
  }

我感觉npm start最初并未被指定用于此目的。

有没有更好的方法来实现这个?

我正在考虑将参数传递给npm test,但我不确定npm是否会将其传递给设置为调用的脚本。

谢谢!

1 个答案:

答案 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将认为整个测试过程失败。

请注意,对于未完全命名为starttest的自定义脚本以及此处文档中找到的其他指定脚本:npm#scripts,必须使用

npm run scriptname

而不仅仅是

npm scriptname

因此,在上面的示例中,您将使用以下方法测试覆盖率:

npm run test:coverage

此外,:只是一个惯例。据我所知,这并不特别。

此外,您可以

  

将[argument]传递给设置为调用的脚本

每当使用npm test时,基本上发生的是npm运行在package.json的{​​{1}}中设置的任何字符串值作为一个过程,就好像你已经将自己的String键入shell。然后它查看返回代码,如果它为0,则报告一切正常;如果它不为零,则会输出错误。