什么是 danger-plugin-istanbul-coverage?
danger-plugin-istanbul-coverage 是一个用于 danger 的插件,通过它我们可以在 pull request 中检查项目的测试覆盖率是否达标。其实现原理是读取项目中生成的 coverage 报告文件,然后对这些文件进行分析,最终生成检查结果并展示在 pull request 中。
安装 danger-plugin-istanbul-coverage
我们可以通过 npm 快速安装 danger-plugin-istanbul-coverage:
$ npm install danger danger-plugin-istanbul-coverage --save-dev
使用 danger-plugin-istanbul-coverage
要使用 danger-plugin-istanbul-coverage,我们需要先配置项目中的测试命令和 coverage 文件的生成路径。
比如我们的项目是一个 React 应用,使用 Jest 进行测试,并设置了测试命令为 npm test
,那么我们需要在项目中添加以下配置:
-- -------------------- ---- ------- -- ------------- ----- - ------- ----- ---- - - ----------------- ----- -------------- - ------------------------------------------ ----- ---- - --------------- ----- ----------- - ----------------------- ----------- ---------------- ------------- ------------ ------------------- ---------------------------- -------------------------------------- -- -- ------ ----------- - ---------------- ----- -------------- - -------------------------------------------------- -- ---------------- - ----- ----------- - -------------------------------------- ----- ----------- - ----------------------------- ----- --------------- - - ------- ------------ ------------------- -------- -- - -- ---------- -- ---------------------------------- - ----- ------- - ------------------- -------- - ------------------------------------ -- --------------------------------- - ------ -------- -- ------ -- ------------------ - ------------------ --- -------- --- -- ---- --- ------- ------ --- --- -- ---- --------------- - -
在上述配置中,我们使用 danger-plugin-istanbul-coverage
读取了项目中的 coverage 报告文件,并生成了检查结果。
具体配置项说明如下:
coveragePath
(必填):生成的 coverage 文件所在的路径。reportFilePatterns
(可选):需要读取的 coverage 文件名及路径。比如默认的 Jest 生成的 coverage 文件路径为${coverageDirectory}/coverage/lcov.info
,那么这里就需要配置为${coverageDirectory}/lcov.info
。
danger-plugin-istanbul-coverage 的检查规则
danger-plugin-istanbul-coverage 包含了默认的检查规则,我们可以直接使用:
dangerCoverage()
默认的检查规则如下所示:
-- -------------------- ---- ------- -- ------------------------------- -------- ----- -------------- - ------------------------------------------ ---------------- ------------- ------------- ------------------- ----------------------- ------------ - ----------- --- --------- --- ---------- --- ------ --- -- --
在以上默认检查规则中,minCoverage
字段表示了最低覆盖率要求,其中 statements
表示语句覆盖率,branches
表示分支覆盖率,functions
表示函数覆盖率,lines
表示行覆盖率。如果我们需要修改最低覆盖率要求,可以通过覆盖默认规则来实现:
-- -------------------- ---- ------- -- ------------- ----- - ------- ----- ---- - - ----------------- ----- -------------- - ------------------------------------------ ----- ----------- - ---------- ----- ------------------ - ---------------------------- ------------------------------------- ----- ----------------- - - ----------- --- --------- --- ---------- --- ------ --- - ---------------- ------------- ------------ ------------------- ------------ ------------------ --
在上述代码中,我们自定义了一个 customMinCoverage
配置项,其中最低要求的语句覆盖率为 70%,分支覆盖率为 50%,函数覆盖率为 75%,行覆盖率为 80%。
完整示例代码
完整的示例代码如下所示:
-- -------------------- ---- ------- -- ------------- ----- - ------- ----- ---- - - ----------------- ----- -------------- - ------------------------------------------ ----- ---- - --------------- ----- ----------- - ----------------------- ----------- ----- ------------------ - ---------------------------- ------------------------------------- ----- ----------------- - - ----------- --- --------- --- ---------- --- ------ --- - ---------------- ------------- ------------ ------------------- ------------ ------------------ -- -- ------ ----------- - ---------------- ----- -------------- - -------------------------------------------------- -- ---------------- - ----- ----------- - -------------------------------------- ----- ----------- - ----------------------------- ----- --------------- - - ------- ------------ ------------------- -------- -- - -- ---------- -- ---------------------------------- - ----- ------- - ------------------- -------- - ------------------------------------ -- --------------------------------- - ------ -------- -- ------ -- ------------------ - ------------------ --- -------- --- -- ---- --- ------- ------ --- --- -- ---- --------------- - -
总结
danger-plugin-istanbul-coverage 是一个非常实用的插件,通过它我们可以快速对项目的测试覆盖率进行检查。在使用时,我们需要配置好测试命令和 coverage 文件的生成路径,并根据自己的需要进行最低覆盖率要求的定义。同时,还可以通过 danger
提供的其他 API 进行更多的自定义检查。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedab46b5cbfe1ea06106d9