npm 包 snapfoo 使用教程

阅读时长 6 分钟读完

在前端开发中,我们经常需要使用各种各样的 npm 包来辅助我们的开发工作,其中就包括 snapfoo。snapfoo 是一个基于 JavaScript 的快照比较工具,可以用于测试 UI 的渲染以及数据变化情况。本文将介绍 snapfoo 的基本使用方法及其深入应用。

安装和配置

要使用 snapfoo,首先需要在项目中安装它:

安装成功后,我们需要对 snapfoo 进行一些配置,以便它能够正常工作。在项目根目录下新建一个 .snapfoorc.js 文件,并填写以下内容:

其中,source 参数表示快照文件存放的目录,这里我们指定为 ./snapshotsimageSnapshot 对象中的参数则用于配置图片快照。

基本使用

使用 snapfoo 的最基本方法就是进行快照比较。我们可以通过以下代码示例来演示:

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

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

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

上述代码中,我们首先生成了一个 h1 标签,并设置其文本内容为 Hello World!。然后,我们将该组件传入 matchSnapshot 方法中,进行快照比较。最后,我们使用 Jest 的 toMatchSnapshot 方法对比快照结果。

运行测试后,snapfoo 会在 ./snapshots 目录中生成一个名为 Header Snapshot Test.png 的快照文件,用于和后续快照进行比较。

如果你要在运行测试时生成新的快照,需要使用以下命令:

其中,-u 参数表示更新快照。

深入应用

除了基本的快照比较功能外,snapfoo 还提供了一些高级功能,例如:允许设置快照比较阈值、可以对比图片、提供了一些自定义配置等等。我们将逐一进行介绍。

设置快照比较阈值

有时候,我们需要对一个图片进行快照比较,但由于一些不可避免的原因,两张图片的细微差别可能会导致测试失败。此时,我们需要设置一个比较阈值,来忽略这些微小的差异。

我们可以通过以下代码来实现:

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

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

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

上述代码中,我们首先引入了 toMatchImageSnapshot 方法和 initializeImageSnapshot 方法。然后,我们对 initializeImageSnapshot 进行了配置,设置了一个快照比较阈值,只有当图片的差异度超过 2% 时才会测试失败。最后,我们使用 toMatchImageSnapshot 方法进行快照比较。

对比图片

当我们需要对比一组图片时,snapfoo 提供了 compareImages 方法。我们可以通过以下代码来实现:

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

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

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

上述代码中,我们首先分别指定了需要对比的两张图片路径。然后,我们使用 compareImages 方法进行比较,最后使用 Jest 的 toMatchSnapshot 方法进行结果断言。

自定义配置

除了基本的快照比较配置外,snapfoo 还允许我们进行一些自定义配置。例如:我们可以设置一个全局的默认阈值、设置一个全局的发生错误时的截图配置等等。我们可以通过以下代码来实现:

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

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

上述代码中,我们首先使用 setGlobalConfig 方法对快照比较、错误截图模式进行了全局配置。其中,imageSnapshot 用于配置图片快照相关参数,errorSnapshot 用于配置错误截图相关参数。这样我们就可以避免在每个测试用例中进行重复配置了。

结语

通过本文的介绍,我们了解了 npm 包 snapfoo 的基本使用方法,以及如何进行深入应用。快照比较是前端开发测试中的一种非常重要的工具,相信读者在实际开发中会有所裨益。

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

纠错
反馈