npm 包 danger-plugin-istanbul-coverage 使用教程

阅读时长 8 分钟读完

什么是 danger-plugin-istanbul-coverage?

danger-plugin-istanbul-coverage 是一个用于 danger 的插件,通过它我们可以在 pull request 中检查项目的测试覆盖率是否达标。其实现原理是读取项目中生成的 coverage 报告文件,然后对这些文件进行分析,最终生成检查结果并展示在 pull request 中。

安装 danger-plugin-istanbul-coverage

我们可以通过 npm 快速安装 danger-plugin-istanbul-coverage:

使用 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 包含了默认的检查规则,我们可以直接使用:

默认的检查规则如下所示:

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

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

在以上默认检查规则中,minCoverage 字段表示了最低覆盖率要求,其中 statements 表示语句覆盖率,branches 表示分支覆盖率,functions 表示函数覆盖率,lines 表示行覆盖率。如果我们需要修改最低覆盖率要求,可以通过覆盖默认规则来实现:

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

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

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

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

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

在上述代码中,我们自定义了一个 customMinCoverage 配置项,其中最低要求的语句覆盖率为 70%,分支覆盖率为 50%,函数覆盖率为 75%,行覆盖率为 80%。

完整示例代码

完整的示例代码如下所示:

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

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

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

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

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

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

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

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

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

总结

danger-plugin-istanbul-coverage 是一个非常实用的插件,通过它我们可以快速对项目的测试覆盖率进行检查。在使用时,我们需要配置好测试命令和 coverage 文件的生成路径,并根据自己的需要进行最低覆盖率要求的定义。同时,还可以通过 danger 提供的其他 API 进行更多的自定义检查。

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

纠错
反馈