【问题标题】:Coverage in Jest doesn't cover branchesJest 中的覆盖范围不包括分支
【发布时间】:2021-03-15 12:36:01
【问题描述】:

我正在尝试为我的 API 创建一个单元测试,但我没有得到 100% 的覆盖率。我已经创建了我能想到的所有可能的测试,但覆盖率报告仍然说我没有测试所有的语句、分支和行。有人能帮我吗?这发生在第 28、29、32 和 33 行

【问题讨论】:

    标签: javascript node.js jestjs


    【解决方案1】:

    根据我的计算,要完全覆盖execute函数,你至少需要这5个测试:

    • 当this.classRepository.getAll() 解析为空数组时
    • 当this.classRepository.getAll() 解析为一项时,
      • 当this.commentsRepository.getLastCommentForClass() 用评论解析时
      • this.commentsRepository.getLastCommentForClass() 在没有注释的情况下解析时
      • 当this.commentsRepository.getLastCommentForClass() 拒绝时
    • 当this.classRepository.getAll() 拒绝时

    作为健全性检查,我还会尝试检查 this.classRepository.getAll() 何时解决多个项目,因为 Promise.all 如果内部至少有一个承诺拒绝,则拒绝。如果是两个项目,它将进行 9 次测试而不是 3 次,因此最好单独覆盖地图功能并在此处像黑匣子一样使用。

    下一个健全性检查将是使用意外数据来解决您的承诺。这很重要,因为您在这里没有任何错误处理,即使您使用.catch 处理外部错误,最好提供适当的拒绝(例如,对意外的东西有错误,对预期的东西有错误)。

    现在,我解释一下我是如何计算的。

    我为你的函数绘制了一个模型,并计算了有多少条路径。我排除了我认为不重要的路径(例如地图功能中的重复),最后得到了这个测试。这是模型:

    【讨论】:

      猜你喜欢
      • 2018-09-09
      • 2018-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-02
      • 2011-07-26
      • 1970-01-01
      • 2019-11-11
      相关资源
      最近更新 更多