前言
karma-coverage-es6 是一款非常好用的代码覆盖率测试工具,它可以很方便的帮助我们监测代码的覆盖情况,科学自动化、节省测试成本。下面,将详细介绍 karma-coverage-es6 的使用教程,以及一些注意事项。
安装和配置
安装
执行npm install karma-coverage-es6
命令安装 karma-coverage-es6。
配置
- 在 karma.conf.js 中添加配置。
通过 plugins 属性,将 karma-coverage-es6 注册到 Karma 中。
-------------- - -------- -- - ------------ --- -------- - -- --------------- - ------------- -- ---------------- -- -------------- - ------------------ -- -------------------- -- --- -- -
若您还未配置 Karma,可以参考 Karma 的使用教程
2.在 karma.conf.js 中配置 karma-coverage-es6。
-------------- - -------- -- - ------------ --- ---------- ------------ ---------------- ----------------- - ---- ------------ ---------- - - ----- ------- ------- ------ -- - ----- -------------- - - -- -------- - ------------ -- -------------- - ---------- ---------------- -- --- -- -
- reporters:定义 Karma 的输出,除了 默认的 'progress' 之外,这里加上了 'coverage-es6',即使用 karma-coverage-es6 的输出。
- coverageReporter:定义 karma-coverage-es6 输出的位置与格式。
- exclude:定义不需要监测的脚本文件,即 *.spec.js。
- preprocessors:定义针对所有的 .js 文件,以 'coverage-es6' plugin 处理。
示例
首先,我们创建一个 test.js 文件,该文件实现一个简单的加法函数,然后需要写测试用例来校验该加法函数是否可行。
demo.js
------ -------- ------ -- - ------ - - -- -
demo.spec.js
------ - --- - ---- ------------ ------------- -------- ------ -- -- - -------- --- --------- -- -- - ------------- --------------- --- ---
在这个案例中,我们只需要测试 add 函数的覆盖率。
修改 karma.conf.js 文件配置,使得 karma-coverage-es6 插件在 karma 中起效。
- -- ------------ --- -------- - ---------------- -------------------- -- -------------- - ---------- ---------------- -- ---------- ---------------- --- -
执行单元测试命令,查看效果,可以得到如下运行结果:
------ ----- ---------------- -------------------- ----- ---------------- --------------------------------------------------------------------- ------- ------ ---- ------------ ---- ------------------- -------------------- ------------------- --- --- ----------------------------- ----------------------- ------ --- --------------------- - --- -- - - ------- ------ ---- ------------------- ----------------------------------- ---- ------------------- ---------------------------- ---- ------------------- -------------------- ------------------- --- --- ------------------------ -- ------- -------------------- ---------- ------ ------ ---- ----------------- ---------------- ---------------- ---- ------------ --------------- -- -------------- ---- -------------------- ------------------------------------------- ---- ---------------------------- ------- ---------------------------------------------------------------------------------- ------------ ------------- ---------------- --------- ------ ------ ------- --------------------------------------------------------------------------------------- ------- --------------------------------------------------------------------------- ------- ---------------------------------------------------------------------------- ------------- - -------------------------- ------- ----------------------- --- ---------------------------- - ----------------- -------------------------------------- -- --- ---------------------------- - ----------------- -------------------------------------- -- --- -------- - --- -------- - ------------------------------------------ -- ---------- - ------------------- - --------- - ---- - ------------------- - --------- - -------- --------------------- - --- --------- ---------------------------------- -------- - --------------------------------- ---------------------------------- -- ---------- - ---------------------------------- -- --------------------- - ---------------------------------- ------------------ - - ----- --------- ------------- --- ------ --- ---------- --- -- --- -- --- -- --- ---------------- ------------------------------------------- ----- -- -- - ---------------------------------- ---------------------- -------------------- ---------------------------------- --------------------- -------------------- ---------------------------------- ------------------- -------------------- - - -------- ------------- ----- - --- ------- - ---------------------------------------------------- -- --------- - ------ ----------- - ------ --- - -------- ------------ ----- - --- ------- - ------------------------------------------------------ -- --------- - ------ ----------- - ------ --- - -------- ---------------------- --------- - --- ---------------- - ----------- ---------------------------------- -- ----------------------------------- --- ------- - --- --------- - ------------- ------------------ ---------------------------------- -- ---------- -- -- - --- ------- - ------------- ---------------- ---------------------------------- --- ---- - - ---------- - -- -------- ---- - ------------------- - -------------------- -- -- - -- - - - - -------- ------------------- --------- - ---------------------------------- -- ----------------------------------- --- --------- - --- ---- - ------------- ----------------- ---------------------------------- -- ----- -- -- - --- ------ - ------------ ------------------- ---------------------------------- -- ------- -- -- - ---------------------------------- -- ------------------- - ---------------------------------- ---------------- - --- - ---------------------------------- ------------------------ - ------------------------- -- -- - -- - - - - -------- --------------------- --------- - ---------------------------------- -- ----------------------------------- --- ----------- - --- ---- - ------------- ----------------- ----------------------------------- -- ----- -- -- - ----------------------------------- -- ------------------- - ----------------------------------- -------------------- - --- ---------------- - -- - ----------------------------------- ------------------- - - - --------- ------- ------------------------------------------------------------------------------------------------- ------- --------------------------------------------------------------------------------- ------- ------------------------------------------------------------------------------ ------- ------------------------------------------------------------------------------------ ------- --------------------------------------------------- ---------------------- ------- --------------------------------------------- ---------------------- ------- ---------------------- --------------- ---------------------- -- -------
从代码中可以看出 karma-coverage-es6 输出了覆盖率测试结果,在运行/coverage 文件下,我们可以看到对代码覆盖率的评估。
注意事项
覆盖率测试有效性
- 涉及到函数声明定义的代码块,可以使用 istanbul 注释进行 skip 如下所示。
-- -------- ------ -- -- -- ------------- - --------------------- ------ ------- -- ----- - -- -------- ------ ---- -- -------- ------------ - -------- -
- 涉及到异步代码的覆盖率测试,需要进行 done() 回调的处理如下所示。
---------- -- ---- -- ----- --- ------ -- - -------- -------------- - --- ------ - ---------------- ---------- - ------------------------------------ ------------- ---- ----- - --------------------------------- -------- ------------------- --- --- ---
- 涉及到 else/elseif 代码块的覆盖率测试,需要使用额外的检测来判断覆盖率。
-------- --------- - -- -- - - --- -- - ------ ----- - ---- -- -- - - --- -- - ------ ------ - ---- - ------ ---- - -------- - -
总结
通过本篇文章的介绍,相信大家对 karma-coverage-es6 应该有了更为详细的了解,使得大家可以快速上手覆盖率测试工具。
具体源代码可参考如下:
https://github.com/bmabey/karma-coverage
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60066ef94c49986ca68d87ae