【问题标题】:Testing via npm command line通过 npm 命令行测试
【发布时间】:2020-05-26 06:43:02
【问题描述】:

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

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

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

我感觉 npm start 最初并不是为此目的而指定的。

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

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

【问题讨论】:

    标签: node.js npm


    【解决方案1】:

    添加更多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.jsonscripts.test 中设置的任何String 值作为一个进程,就好像您自己在shell 中输入了该String .然后查看返回码,如果为 0,则报告一切正常;如果它不为零,则打印错误。

    【讨论】:

    • : 只是一个约定......但我仍然必须使用test 作为前缀,对吧?因为当我尝试使用 npm 文档中指定的内容以外的任何内容时,我得到了一个错误。
    • @goodvibration 不应该这样。你正在使用的脚本属性的名称是什么,你运行了什么命令,你得到了什么错误?将该信息作为对原始问题的编辑。
    • 嗯,我使用了,例如"coverage": "node scripts/run-sol-coverage.js",然后尝试通过npm coverage 运行它。你是说我错了只是没有使用npm run coverage
    • @goodvibration 查看我答案的最后一个代码 sn-p。该命令不是npm coverage,而是npm run coverage,带有子命令run。 Npm 只会自动将某些脚本视为子命令。
    • 有没有机会看看我的this npm question
    猜你喜欢
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 2013-12-12
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多