在前端开发中,测试是非常重要和常用的技术手段。而对于测试工具来说,Jest 是目前开发者使用最广泛的一个工具。但是在使用 Jest 进行测试时,我们有时候会发现,有一些文件或者语句没有被测试覆盖到,这将导致我们的测试结果不够准确,也无法提供足够的保障,而这些问题的出现是有原因的。
问题原因
1. 忽略文件
Jest 默认会自动识别 __tests__
目录下的所有测试文件,以及匹配 .test.js, .spec.js
后缀的文件。但是,如果我们的测试文件并不在这些文件中,Jest 就无法针对这些文件进行测试。为了解决这个问题,我们需要使用 testRegex
配置选项手动配置我们的测试文件路径。
// jest.config.js module.exports = { testRegex: /\.test\.js$/, };
2. 模块引入问题
在进行测试时,我们需要确保我们能够正确地引入需要测试的模块。如果模块引入出现问题,就会导致测试无法覆盖到该模块的语句,因此在引入模块时要格外注意。
-- -------------------- ---- ------- -- -------- ------ ----- --- - --- -- -- - - -- ------ ----- -------- - --- -- -- - - -- -- ------------- ------ - ---- -------- - ---- ----------- ------------- ---------- -- -- - ---------- --- ----------- -- -- - ------------- ------------ --- --- ------------------ ---------- -- -- - ---------- -------- ----------- -- -- - ------------------ ------------ --- ---
3. 覆盖率阈值
Jest 默认的覆盖率阈值是 50%
,如果函数的覆盖率低于这个值,就会被视为未覆盖,不会在测试报告中显示。如果想要使未覆盖的代码被检测到,我们需要修改配置文件中的 coverageThreshold
选项。
-- -------------------- ---- ------- -- -------------- -------------- - - ------------------ - ------- - --------- --- ---------- --- ------ --- ----------- --- -- -- --
解决方案
1. 编写更全面的测试用例
编写更全面的测试用例可以更好地覆盖代码。我们可以考虑对所有函数的输入输出进行测试,检查边界条件,单个函数的错误处理等。当然,在测试过程中也要注意是否存在引入模块等语句有问题,尤其是在使用 mock 数据时需要格外注意。
-- -------------------- ---- ------- -- ------- ------ -------- ------ -- - -- ------- - --- -------- -- ------ - --- --------- - ----- --- ---------- -------- ------ ------- --- ---------- - ------ - - -- - -- ------------ ------ - --- - ---- --------- ------------- ---------- -- -- - ------------ ------- --- --------- -- -- - --------- -- -------- -------------- --------- -- ------ ---------------- --- ------------ --- --- --------- -- -- - ------------- ------------ ------------- ------------ --- ---
2. 使用覆盖率分析工具
我们可以通过覆盖率分析工具来分析我们的代码测试情况,并且以可视化的方式呈现。这样我们可以更好地了解哪些代码没有被测试到,以及哪些代码需要增加更深入的测试。
// jest.config.js module.exports = { // 将分析结果输出到 coverage 文件夹下 coverageDirectory: 'coverage', // 使用 coverageIstanbulReporter 插件提供覆盖率分析 coverageReporters: ['json', 'lcov', 'text', 'clover', 'html'], };
3. 使用 mock 数据
在进行测试时,我们很难控制外部环境的影响,所以为了测试一个函数的功能,很多时候需要写很多代码,以重现真实场景。这时我们可以使用 mock 数据,将外部环境的影响隔离开来,更好地进行测试。
-- -------------------- ---- ------- -- ------ ------ ----- ---- -------- ------ ----- -------- ------------- - ----- -------- - ----- ------------------- ------ -------------- - -- ----------- ------ - ----------- - ---- -------- ------------------ -- -- -- ---- ---------- -- ----------------- ----- - ----- ------ ---- -- - ---- ---- --------------------- ---------- -- -- - ------------ --- ------- ---- ------ ----- -- -- - ----- --- - ----- -------------- ----------------------------- ------------------------- --- ---
总结
Jest 是一款非常使用的前端测试工具,在使用过程中会有一些问题,但是这些问题都能够得到一定的解决。编写更全面的测试用例、使用覆盖率分析工具、使用 mock 数据等,都是我们解决这些问题的有效途径。最重要的是,只有经过充分的测试,我们才能保证我们的代码质量,并提供更好的用户体验。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/648145dd48841e98940b3052