Jest 测试无法覆盖到某些文件或语句的原因及解决方案

阅读时长 6 分钟读完

在前端开发中,测试是非常重要和常用的技术手段。而对于测试工具来说,Jest 是目前开发者使用最广泛的一个工具。但是在使用 Jest 进行测试时,我们有时候会发现,有一些文件或者语句没有被测试覆盖到,这将导致我们的测试结果不够准确,也无法提供足够的保障,而这些问题的出现是有原因的。

问题原因

1. 忽略文件

Jest 默认会自动识别 __tests__ 目录下的所有测试文件,以及匹配 .test.js, .spec.js 后缀的文件。但是,如果我们的测试文件并不在这些文件中,Jest 就无法针对这些文件进行测试。为了解决这个问题,我们需要使用 testRegex 配置选项手动配置我们的测试文件路径。

2. 模块引入问题

在进行测试时,我们需要确保我们能够正确地引入需要测试的模块。如果模块引入出现问题,就会导致测试无法覆盖到该模块的语句,因此在引入模块时要格外注意。

-- -------------------- ---- -------
-- --------
------ ----- --- - --- -- -- - - --
------ ----- -------- - --- -- -- - - --

-- -------------
------ - ---- -------- - ---- -----------

------------- ---------- -- -- -
  ---------- --- ----------- -- -- -
    ------------- ------------
  ---
---

------------------ ---------- -- -- -
  ---------- -------- ----------- -- -- -
    ------------------ ------------
  ---
---

3. 覆盖率阈值

Jest 默认的覆盖率阈值是 50%,如果函数的覆盖率低于这个值,就会被视为未覆盖,不会在测试报告中显示。如果想要使未覆盖的代码被检测到,我们需要修改配置文件中的 coverageThreshold 选项。

-- -------------------- ---- -------
-- --------------
-------------- - -
  ------------------ -
    ------- -
      --------- ---
      ---------- ---
      ------ ---
      ----------- ---
    --
  --
--

解决方案

1. 编写更全面的测试用例

编写更全面的测试用例可以更好地覆盖代码。我们可以考虑对所有函数的输入输出进行测试,检查边界条件,单个函数的错误处理等。当然,在测试过程中也要注意是否存在引入模块等语句有问题,尤其是在使用 mock 数据时需要格外注意。

-- -------------------- ---- -------
-- -------
------ -------- ------ -- -
  -- ------- - --- -------- -- ------ - --- --------- -
    ----- --- ---------- -------- ------ ------- --- ----------
  -
  ------ - - --
-

-- ------------
------ - --- - ---- ---------

------------- ---------- -- -- -
  ------------ ------- --- --------- -- -- -
    --------- -- -------- --------------
    --------- -- ------ ----------------
  ---

  ------------ --- --- --------- -- -- -
    ------------- ------------
    ------------- ------------
  ---
---

2. 使用覆盖率分析工具

我们可以通过覆盖率分析工具来分析我们的代码测试情况,并且以可视化的方式呈现。这样我们可以更好地了解哪些代码没有被测试到,以及哪些代码需要增加更深入的测试。

3. 使用 mock 数据

在进行测试时,我们很难控制外部环境的影响,所以为了测试一个函数的功能,很多时候需要写很多代码,以重现真实场景。这时我们可以使用 mock 数据,将外部环境的影响隔离开来,更好地进行测试。

-- -------------------- ---- -------
-- ------
------ ----- ---- --------

------ ----- -------- ------------- -
  ----- -------- - ----- -------------------
  ------ --------------
-

-- -----------
------ - ----------- - ---- --------

------------------ -- -- --
  ---- ---------- -- ----------------- ----- - ----- ------ ---- -- - ----
----

--------------------- ---------- -- -- -
  ------------ --- ------- ---- ------ ----- -- -- -
    ----- --- - ----- --------------
    -----------------------------
    -------------------------
  ---
---

总结

Jest 是一款非常使用的前端测试工具,在使用过程中会有一些问题,但是这些问题都能够得到一定的解决。编写更全面的测试用例、使用覆盖率分析工具、使用 mock 数据等,都是我们解决这些问题的有效途径。最重要的是,只有经过充分的测试,我们才能保证我们的代码质量,并提供更好的用户体验。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/648145dd48841e98940b3052

纠错
反馈