javascript - Jest 中的覆盖范围不包括分支

标签 javascript node.js jestjs

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

enter image description here

最佳答案

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

  • this.classRepository.getAll() 解析为空数组时
  • this.classRepository.getAll() 解析为一项时,
    • this.commentsRepository.getLastCommentForClass() 解析为评论时
    • this.commentsRepository.getLastCommentForClass() 解析时没有评论
    • this.commentsRepository.getLastCommentForClass() 拒绝时
  • this.classRepository.getAll() 拒绝时

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

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

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

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

enter image description here

关于javascript - Jest 中的覆盖范围不包括分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66622204/

相关文章:

javascript - 如何隐藏html文本框中的文本

php - 滚动到与单击的缩略图对应的图像的图像库

javascript - 这是 NodeJS 中的变量作用域错误还是我只是需要更多的 sleep

typescript - 将 Jest 与 Typescript 一起使用时的转译

来自 MATLAB 的 JavaScript 相当于 "nansum"?

javascript - DTM - 将自定义事件附加到页面加载事件

node.js - 无法在 Google 云功能中验证 Twilio 请求

node.js - 如何运行 Node 而不卡在 Node 命令提示符中

reactjs - 有没有办法用react-test-renderer测试Chakra-ui模式对话框?

react-native - Jest-expo 测试没有运行