npm 包 unexpected-snapshot 使用教程

AI 编程助手,豆包旗下的编程助手,提供智能补全、智能预测、智能问答等能力,节省开发时间,释放脑海中的创造力,支持 VSCode,点击体验 AI

前言

在软件开发过程中,测试是非常重要的一环。因为代码的正确性直接关系到用户的体验和系统的稳定性。而测试则可以帮我们发现和修复问题,确保代码的质量和可靠性。在 JavaScript 的前端开发领域,测试也是十分重要的一项工作。为了编写测试用例,我们需要一些工具和库来辅助我们。其中,提供快照测试的工具非常简便和高效,而其中一个可选择的工具是 npm 包 unexpected-snapshot 。

unexpected-snapshot 是一个基于 assert 模块的、支持快照测试的断言库。它提供了不少有用的特性,可以帮助我们编写简单而又高效的测试用例。本文将介绍 unexpected-snapshot 的用法和示例,以及它如何帮助我们编写更简单和高效的测试用例。

安装和使用

为了使用 unexpected-snapshot ,我们需要先安装它到我们的项目中。我们可以使用 npm 包管理工具来安装:

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

unexpected-snapshot 需要配合 unexpected 一起使用,所以我们需要一起安装它们。接下来,在测试文件中引入 unexpected 和 unexpected-snapshot :

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

接着,我们就可以使用 expect 断言语法来完成测试了。using() 方法告诉 expect 使用 unexpectedSnapshot 插件。我们将它添加到 expect 实例上,就可以愉快地享受快照测试了。

使用场景

快照测试通常被用于比较 DOM 的结构和输出,如 HTML、SVG、Canvas 元素等。想象一下,在我们编写复杂的组件时,我们需要检查组件产生的 HTML 是否符合预期。这种场景下,我们可以使用快照测试,对比组件渲染出来的 HTML 和预期的 HTML 是否一致。

基本用法

unexpected-snapshot 提供了 toMatchSnapshot 和 addSnapshotSerializer 两个方法。下面简单介绍一下它们的用法。

toMatchSnapshot

toMatchSnapshot 方法是快照测试的关键。它的作用是比较测试结果与预期是否匹配。执行 toMatchSnapshot 方法的同时,如果没有预期的快照,则会生成一个新的快照。如果已经存在预期的快照,则会将测试结果与预期的快照进行比较。如果测试结果和预期快照不符,则测试用例失败。

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

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

该测试用例将匹配 myObject 的快照。如果测试运行成功,它将生成一个名为“test matches the snapshot.snapshot”的文件,其中包含了 myObject 的快照。这个快照文件将用作下次执行测试时的预期值。

如果我们对 myObject 进行了更改,那么测试用例就会失败:

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

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

在这种情况下,我们将得到类似于以下的错误消息:

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

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

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

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

我们可以看到,测试失败了,并且输出了一个错误消息。在这个错误消息中,我们可以看到预期的快照与实际的测试结果之间的差异。这使得我们能够快速地发现问题,然后进行修复。

addSnapshotSerializer

有时候,预期值的格式和实际测试结果的格式是不同的。在这种情况下,我们需要自定义一个序列化器来将实际结果转换为预期值的格式。为此,unexpected-snapshot 提供了 addSnapshotSerializer 方法:

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

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

默认情况下,addSnapshotSerializer 将返回 undefined 。所以我们需要根据实际情况来编写适当的序列化器。

addSnapshotSerializer 方法接受一个序列化器函数。序列化器函数接受测试结果作为入参,并返回序列化后的数据。序列化后的数据将写入到快照文件中。

在上面的示例中,addSnapshotSerializer 的序列化器函数接受一个 obj 参数,并返回一个 representedProperties 属性。representedProperties 的值是一个数组,表示了哪些成员应该被写入到快照文件中。

同时,这个序列化器定义了一个新的快照格式。我们可以使用此新的格式来测试其他的应用程序。

示例代码

为了更好地理解 unexpected-snapshot 的用法,下面列举两个示例代码:

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

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

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

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

这是一个使用 unexpected-snapshot 来测试 Canvas 元素生成的新快照。

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

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

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

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

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

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

这个是使用 unexpected-snapshot 来测试计算器应用程序的新快照。

总结

本文介绍了 npm 包 unexpected-snapshot 的用法和示例。我们可以看到,unexpected-snapshot 提供了实现快照测试的关键方法 toMatchSnapshot 和 addSnapshotSerializer 。我们可以使用它们来检查实际测试结果是否与预期结果相符。该快照测试库由 assert 模块构建,易于使用和配置。它的快照测试用例通常用于测试 DOM 结构和其它可序列化对象的输出。在这种情况下,快照测试可以提供一个快速、简单和可靠的方法,以确保应用程序的正确性和稳定性。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5eedc061b5cbfe1ea0611c8e


猜你喜欢

  • npm 包 unexpected-htmllike-reactrendered-adapter 使用教程

    介绍 在前端开发中,我们经常需要编写单元测试来保证代码的正确性。在 React 开发中,有时需要针对渲染后的组件进行测试,这个时候就需要使用类似于 HTML 的组件渲染适配器。

    4 年前
  • npm 包 react-create-class 使用教程

    react-create-class 是一个 npm 包,用于创建 React 组件的 class,它提供了一种方便、简单的方式来创建组件。本文将介绍 react-create-class 的使用方法...

    4 年前
  • npm 包 @ant-design/icons-angular 使用教程

    前言 在前端开发过程中,我们经常需要引用图标来丰富页面内容,提高用户体验。@ant-design/icons-angular 是 Ant Design 家族中的一个图标库,并为 Angular 框架提...

    4 年前
  • npm 包 normalized-interaction-events 使用教程

    简介 normalized-interaction-events 是一个 npm 包,它提供了对标准交互事件进行标准化处理的功能,可以使开发者更加方便地处理用户的交互操作。

    4 年前
  • npm 包 dom-compare 使用教程

    简介 dom-compare 是一个基于 JavaScript 的 npm 包,旨在为开发者提供易用的 DOM 比较功能。在前端领域中,DOM 通常是我们操作页面元素的重要手段之一,但是在一些情况下,...

    4 年前
  • npm 包 eslint-config-persgroep 使用教程

    在前端开发中,代码规范非常重要。而 eslint-config-persgroep 是一个针对前端代码规范的 npm 包。本文将为您介绍如何使用它来提高代码的质量和可读性,同时提供示例代码。

    4 年前
  • npm 包 create-point-cb 使用教程

    什么是 create-point-cb? create-point-cb 是一个 npm 包,它可以帮助开发者轻松地创建一个点赞组件,并自动回调点赞的结果。 如何安装? 在你的项目目录下运行以下命令:...

    4 年前
  • npm 包 dom-mousemove-dispatcher 使用教程

    前言 当我们需要检测鼠标在 DOM 元素内的移动时,很多时候我们需要自行编写大量的事件监听器来实现这一功能。而此时,npm 包 dom-mousemove-dispatcher 就能为我们提供更加简洁...

    4 年前
  • npm 包 dom-plane 使用教程

    前言 前端开发中,DOM 操作是非常常见也非常重要的一个部分。在进行一些复杂的浮层或者动画操作时,我们需要明确定位元素的准确位置。本文介绍一款 npm 包 dom-plane ,它提供了快速、简洁而且...

    4 年前
  • npm 包 iselement 使用教程

    简介 iselement 是一个 npm 包,它提供了一个简单而强大的方法,用于检测 DOM 元素是否出现在视口中。这对于实现像“懒加载”、“无限滚动”和“视差滚动”等滚动效果非常有用。

    4 年前
  • npm 包 dom-set 使用教程

    在前端开发中,操作 DOM 元素是必不可少的工作。但是 DOM 元素的属性和样式设置繁琐,尤其是当需要对多个元素进行操作时,代码显得冗长而难以维护。这时候可以使用 npm 包 dom-set 来优化开...

    4 年前
  • npm 包 type-func 使用教程

    什么是 type-func? type-func 是一个专门用来校验数据类型和函数参数类型的 npm 包,它可以帮助开发者编写更加健壮、安全的 JavaScript 代码。

    4 年前
  • npm 包 @mattlewis92/dom-autoscroller 使用教程

    介绍 @mattlewis92/dom-autoscroller 是一个用于自动滚动 DOM 元素的 npm 包。它可以让我们通过简单的 API 配置,轻松地实现自动滚动的功能,使得用户可以更加方便地...

    4 年前
  • npm 包 npm-bin-deps 使用教程

    在前端开发中,我们经常需要使用各种不同的工具来辅助我们完成工作,例如代码打包、压缩、优化等。这些工具通常会作为 npm 包来发布,并可以通过 npm 安装和使用。但是有些工具还需要依赖一些系统级别的依...

    4 年前
  • npm 包 @cartant/tslint-config 使用教程

    在前端开发中,我们常常会使用 TSLint 工具来规范代码风格,提高代码的可读性和可维护性。而在使用 TSLint 进行代码检查时,一个好的 TSLint 配置文件非常重要。

    4 年前
  • npm 包 @cartant/tslint-config-etc 使用教程

    简介 在开发过程中,使用一套规范明确的代码编写方式可以提高代码质量和可读性。TSLint 是一款集成了多种规则的 JavaScript/TypeScript 代码检查工具。

    4 年前
  • npm 包 @scarf/scarf 使用教程

    在现代 web 开发中,使用第三方 JavaScript 库和工具包已经成为了日常。npm 是目前最受欢迎的 JavaScript 包管理器,其中包括了包括了很多高质量的开源项目。

    4 年前
  • npm 包 @types/es6-collections 使用教程

    在前端开发中,我们经常会使用各种 JavaScript 库和框架来帮助我们开发应用程序。但是如何在 TypeScript 项目中使用这些库和框架呢?这时候就需要使用 @types 类型说明文件。

    4 年前
  • npm 包 @ionic/cli-plugin-cordova 使用教程

    在移动应用程序开发中,Cordova 是一个十分实用的框架。@ionic/cli-plugin-cordova 是一个可以更好地使用 Cordova 的插件。本篇文章将详细介绍如何安装和使用 @ion...

    4 年前
  • npm 包 @ionic/cli-utils 使用教程

    前言 在前端开发中,使用编辑器工具来提高效率是必不可少的。其中,npm 包 @ionic/cli-utils 是一个非常实用的工具,它可以辅助我们使用 Ionic 开发移动应用,在开发过程中能够提高我...

    4 年前

相关推荐

    暂无文章