是什么导致Jest在此代码中显示75%的分支覆盖率?

内特·莱文

我有一个文件,parsePredicate.ts我相信其中没有分支。但是,Jest覆盖率报告说它只有75%的分支覆盖率。分公司在哪里?

parsePredicate.ts

import parseIdentifier from "../parseIdentifier/parseIdentifier";
import parseOperator from "../parseOperator/parseOperator";
import { parseExpression } from "../parseExpression/parseExpression";

const parsePredicate = (str: string)=>{
    let {identifier: left, rest:identRest} = parseIdentifier(str);
    let {operator, rest:opRest} = parseOperator(identRest);
    let {expression: right, rest:exprRest} = parseExpression(opRest);
    return { left: left, operator: operator, right: right, rest: exprRest };
}
export default parsePredicate;

parsePredicate.test.ts

import parsePredicate from "./parsePredicate";
import parseIdentifier from "../parseIdentifier/parseIdentifier";
import parseOperator from "../parseOperator/parseOperator";
import { parseExpression } from "../parseExpression/parseExpression";

jest.mock("../parseIdentifier/parseIdentifier");
jest.mock("../parseOperator/parseOperator");
jest.mock("../parseExpression/parseExpression");

test("Parsing a predicate with number returns proper values", ()=>{
    // @ts-ignore
    parseIdentifier.mockReturnValueOnce({identifier: "x", rest:" = 1"});
    // @ts-ignore
    parseOperator.mockReturnValueOnce({operator: "=", rest:" 1"});
    // @ts-ignore
    parseExpression.mockReturnValueOnce({expression: "1", rest:""});
    expect(parsePredicate("x = 1")).toStrictEqual({left:"x", operator:"=", right:"1", rest:""});
});
test("Parsing a predicate with math returns proper values", ()=>{
    // @ts-ignore
    parseIdentifier.mockReturnValueOnce({identifier: "x", rest:" = 1 + 1"});
    // @ts-ignore
    parseOperator.mockReturnValueOnce({operator: "=", rest:" 1 + 1"});
    // @ts-ignore
    parseExpression.mockReturnValueOnce({expression: "1 + 1", rest:""});
    expect(parsePredicate("x = 1 + 1")).toStrictEqual({left:"x", operator:"=", right:"1 + 1", rest:""});
});
test("Parsing a predicate with string returns proper values", ()=>{
    // @ts-ignore
    parseIdentifier.mockReturnValueOnce({identifier: "x", rest:" = 'Hello World'"});
    // @ts-ignore
    parseOperator.mockReturnValueOnce({operator: "=", rest:" 'Hello World'"});
    // @ts-ignore
    parseExpression.mockReturnValueOnce({expression: "'Hello World'", rest:""});
    expect(parsePredicate("x = 'Hello World'")).toStrictEqual({left:"x", operator:"=", right:"'Hello World'", rest:""});
});
test("Parsing a predicate with identifier returns proper values", ()=>{
    // @ts-ignore
    parseIdentifier.mockReturnValueOnce({identifier: "x", rest:" = ident"});
    // @ts-ignore
    parseOperator.mockReturnValueOnce({operator: "=", rest:" ident"});
    // @ts-ignore
    parseExpression.mockReturnValueOnce({expression: "ident", rest:""});
    expect(parsePredicate("x = ident")).toStrictEqual({left:"x", operator:"=", right:"ident", rest:""});
});

运行时jest --coverage,我的parsePredicate.ts文件得到以下输出

---------------------|---------|----------|---------|---------|-------------------
File                 | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
---------------------|---------|----------|---------|---------|-------------------
parsePredicate       |     100 |       75 |     100 |     100 |                   
  parsePredicate.ts  |     100 |       75 |     100 |     100 | 11   

如您所见,它表示未发现第11行。但是,第11行只是一个export语句:

export default parsePredicate;

lcov报告如下所示:lcov报告请注意,如果按n或j,则没有任何变化。

我一直在寻找到这一点,现在看来似乎可能与由巴贝尔产生esmodule胶水代码来完成,但是我不知道怎么去修复这一点。

如果您需要更多信息,请发表评论。任何帮助将不胜感激。

内特·莱文

经过很长一段时间试图找出问题的答案之后,我得出了以下答案。

基本上,我jest.config.js使用的是v8coverage提供商。

// Indicates which provider should be used to instrument code for coverage
coverageProvider: "v8",

我使用的是节点版本12.16.1,因此该提供程序不是很好,并且有很多问题。

更改为babel提供程序可以解决我遇到的所有问题,并为该代码提供100%的分支覆盖率。

// Indicates which provider should be used to instrument code for coverage
coverageProvider: "babel",

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

VS2013中的代码覆盖率显示测试的覆盖率,而不是实际代码的覆盖率

来自分类Dev

Babel Jest中没有代码覆盖率

来自分类Dev

测试代码覆盖率:数字是什么意思?

来自分类Dev

什么是代码覆盖率的部分打击?

来自分类Dev

为什么在此python-inquirer脚本中覆盖率不是100%?

来自分类Dev

测试中的代码覆盖率

来自分类Dev

块覆盖率和分支覆盖率有什么区别?

来自分类Dev

代码覆盖率失败您的代码覆盖率是72%。您需要至少75%的覆盖率才能完成此部署

来自分类Dev

基于Jasmine构建的Jest的代码覆盖率

来自分类Dev

基于Jasmine构建的Jest的代码覆盖率

来自分类Dev

chutzpah的代码覆盖率导致超时错误

来自分类Dev

chutzpah的代码覆盖率导致超时错误

来自分类Dev

HTML中的Jest覆盖率报告缺少覆盖率值

来自分类Dev

Jacoco为什么会显示代码覆盖率为0?

来自分类Dev

如何在测试代码覆盖率中覆盖catchError

来自分类Dev

声纳中未显示团队城市代码覆盖率和单元测试结果

来自分类Dev

PHPUnit:在命令行中运行时,显示代码覆盖率吗?

来自分类Dev

SonarQube可以配置为在“预览”模式报告中显示代码覆盖率吗?

来自分类Dev

如何重置intelij想法中的代码覆盖率突出显示

来自分类Dev

SonarQube分析未显示代码覆盖率

来自分类Dev

TFS 2015代码覆盖率未显示

来自分类Dev

TFS 2015代码覆盖率未显示

来自分类Dev

Xcode:代码覆盖率

来自分类Dev

RSpec的代码覆盖率

来自分类Dev

CoffeeScript代码覆盖率

来自分类Dev

在检查异常时,为什么代码覆盖率未在测试代码中报告100%的代码覆盖率?

来自分类Dev

当大多数班级缺少覆盖时,“代码覆盖率”分析显示100%的覆盖率

来自分类Dev

什么是序列覆盖率?

来自分类Dev

Django中jinja2模板的代码覆盖率

Related 相关文章

  1. 1

    VS2013中的代码覆盖率显示测试的覆盖率,而不是实际代码的覆盖率

  2. 2

    Babel Jest中没有代码覆盖率

  3. 3

    测试代码覆盖率:数字是什么意思?

  4. 4

    什么是代码覆盖率的部分打击?

  5. 5

    为什么在此python-inquirer脚本中覆盖率不是100%?

  6. 6

    测试中的代码覆盖率

  7. 7

    块覆盖率和分支覆盖率有什么区别?

  8. 8

    代码覆盖率失败您的代码覆盖率是72%。您需要至少75%的覆盖率才能完成此部署

  9. 9

    基于Jasmine构建的Jest的代码覆盖率

  10. 10

    基于Jasmine构建的Jest的代码覆盖率

  11. 11

    chutzpah的代码覆盖率导致超时错误

  12. 12

    chutzpah的代码覆盖率导致超时错误

  13. 13

    HTML中的Jest覆盖率报告缺少覆盖率值

  14. 14

    Jacoco为什么会显示代码覆盖率为0?

  15. 15

    如何在测试代码覆盖率中覆盖catchError

  16. 16

    声纳中未显示团队城市代码覆盖率和单元测试结果

  17. 17

    PHPUnit:在命令行中运行时,显示代码覆盖率吗?

  18. 18

    SonarQube可以配置为在“预览”模式报告中显示代码覆盖率吗?

  19. 19

    如何重置intelij想法中的代码覆盖率突出显示

  20. 20

    SonarQube分析未显示代码覆盖率

  21. 21

    TFS 2015代码覆盖率未显示

  22. 22

    TFS 2015代码覆盖率未显示

  23. 23

    Xcode:代码覆盖率

  24. 24

    RSpec的代码覆盖率

  25. 25

    CoffeeScript代码覆盖率

  26. 26

    在检查异常时,为什么代码覆盖率未在测试代码中报告100%的代码覆盖率?

  27. 27

    当大多数班级缺少覆盖时,“代码覆盖率”分析显示100%的覆盖率

  28. 28

    什么是序列覆盖率?

  29. 29

    Django中jinja2模板的代码覆盖率

热门标签

归档