在前端开发中,我们经常需要使用各种各样的 npm 包来辅助我们的开发工作,其中就包括 snapfoo。snapfoo 是一个基于 JavaScript 的快照比较工具,可以用于测试 UI 的渲染以及数据变化情况。本文将介绍 snapfoo 的基本使用方法及其深入应用。
安装和配置
要使用 snapfoo,首先需要在项目中安装它:
npm install snapfoo --save-dev
安装成功后,我们需要对 snapfoo 进行一些配置,以便它能够正常工作。在项目根目录下新建一个 .snapfoorc.js
文件,并填写以下内容:
module.exports = { source: './snapshots', imageSnapshot: { updateSnapshots: true, customSnapshotsDir: './snapshots', }, };
其中,source
参数表示快照文件存放的目录,这里我们指定为 ./snapshots
;imageSnapshot
对象中的参数则用于配置图片快照。
基本使用
使用 snapfoo 的最基本方法就是进行快照比较。我们可以通过以下代码示例来演示:
-- -------------------- ---- ------- ------ - ------------- - ---- ---------- ------------ -------- ------ -- -- - ----- ------ - ----------------------------- ---------------- - ------ -------- ----- --------- - ------- ----- ------ - ------------------------- --------------------------------- ---
上述代码中,我们首先生成了一个 h1
标签,并设置其文本内容为 Hello World!
。然后,我们将该组件传入 matchSnapshot
方法中,进行快照比较。最后,我们使用 Jest 的 toMatchSnapshot
方法对比快照结果。
运行测试后,snapfoo 会在 ./snapshots
目录中生成一个名为 Header Snapshot Test.png
的快照文件,用于和后续快照进行比较。
如果你要在运行测试时生成新的快照,需要使用以下命令:
npm test -- -u
其中,-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