代码之家  ›  专栏  ›  技术社区  ›  Michael Durrant

如何使用react create应用程序获取代码覆盖率报告?

  •  1
  • Michael Durrant  · 技术社区  · 4 年前

    如果我跑

    npm test --coverage
    

    测试通过,但覆盖范围未运行。

    当我改变 package.json 拥有

    react-scripts test --coverage
    

    然后,当我 npm test a 它运行测试,但不运行覆盖率

    测试与覆盖率报告一起运行,但覆盖率显示覆盖率为全零

     PASS  src/components/Header/SubHeader.test.js
      The <SubHeader /> component
        ✓ should render (4ms)
        ✓ should render with a goback button (1ms)
        ✓ should render
    
    ----------|----------|----------|----------|----------|-------------------|
    File      |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
    ----------|----------|----------|----------|----------|-------------------|
    All files |        0 |        0 |        0 |        0 |                   |
    ----------|----------|----------|----------|----------|-------------------|
    Test Suites: 1 passed, 1 total
    Tests:       3 passed, 3 total
    Snapshots:   3 passed, 3 total
    Time:        1.077s
    Ran all test suites.
    

    最后,我意识到我能做到

    npm run test .
    

    问题:为什么其他方法不起作用?

    0 回复  |  直到 4 年前
        1
  •  6
  •   Mario Petrovic Emmanuel Onah    3 年前

    在重温这个问题之后,我发现如果你运行这个,你将触发覆盖命令并得到所有结果。

    解决方案1

    npm run test -- --coverage .
    

    当你把论点传递给 npm 脚本,您需要添加 -- 在添加如下参数之前 --coverage .就是这样 npm 作品 See this answer for passing arguments to npm

    解决方案2

    yarn test --coverage .
    

    编辑:

    我问了一个关于 . 传递命令和答案非常简单。 . 传递,因为它是位置参数,而不是 --覆盖范围 这是我们的选择 npm test 命令: Why is . passed as argument to npm without -- delimiter?

    ----问题分析----

    问题1

    npm test --coverage 你不能通过 --覆盖范围 争论 test 剧本

    在另一种情况下,当您将脚本编辑为:

    react-scripts test --coverage 然后跑 npm试验 在这里,你实际添加了参数 --覆盖范围 ,但在脚本本身,而不是从 npm 命令

    问题2

    当你这么做的时候 npm run test . 你路过 . 这意味着您希望在此命令中包含所有文件。

    出于某种原因 . 传递给 npm run test 脚本,但不是 --覆盖范围 .

    在另一边 yarn 不带任何理由地通过所有论点 -- .

    推荐文章