npm包jest-snapshot使用教程

介绍

jest-snapshot 是一个用于快照测试的npm包。使用它,我们可以在写单元测试时,轻松地记录某个函数或组件在特定输入情况下的输出,并将其保存为快照。然后,在以后的测试中,我们可以检查该函数/组件的输出是否与之前保存的快照匹配。

安装

首先,在项目根目录中安装 jest-snapshot

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

接下来,您需要在jest配置文件(通常是 jest.config.js)中启用快照测试。 在配置文件中添加以下内容:

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

这个配置告诉Jest在运行测试时使用 jest-snapshot。同时,snapshotSerializers指定了序列化程序,以将输出转换为字符串进行比较,例如 jest-snapshot-serializer-raw 可以让您看到更具可读性的差异信息。

使用

在我们的测试脚本中,我们可以使用 toMatchSnapshot() 函数来创建和更新快照。例如,考虑一个很简单的函数:

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

我们可以编写以下测试:

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

在第一次运行此测试时,toMatchSnapshot() 将记录 sum(1,2) 的输出,并将其保存到一个文件中。以后再次运行该测试时,它将与保存的快照进行比较,如果两者不匹配,测试就会失败。

当测试失败时,我们可以使用 --updateSnapshot 标志来更新快照:

--- ---- -- --

这将强制Jest使用当前函数/组件的输出更新快照。

高级用法

在某些情况下,我们可能需要更细粒度地控制快照测试的行为。例如,我们可能需要在测试中包含随机生成的数据,或者我们可能需要针对不同的输入情况创建多个快照。

在这种情况下,我们可以使用 toMatchInlineSnapshot() 函数。使用此函数,我们可以直接在测试脚本中指定快照内容,而无需将其保存到单独的文件中。例如:

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

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

注意,toMatchInlineSnapshot() 可以接受任何字符串作为参数,因此您可以将其用于嵌入其他类型的数据(如对象和数组)。

结论

使用 jest-snapshot 进行快照测试可以让我们更轻松地编写和维护单元测试。通过创建快照,我们可以轻松地比较函数/组件输出的变化,并且可以使用 toMatchSnapshot() 函数轻松更新快照。即使在处理复杂数据时,也可以使用 toMatchInlineSnapshot() 函数更高效地进行快照测试。

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


猜你喜欢

  • npm 包 unicode-length 使用教程

    在前端开发中,我们经常需要对字符串的长度进行操作和限制。然而,在处理非 ASCII 字符的时候,常规的 str.length 方法会出现问题,因为它无法正确识别双字节字符(如中文、日文、韩文等)的实际...

    6 年前
  • 使用 tap-mocha-reporter 生成前端测试报告

    在前端开发中,我们需要经常进行单元测试和集成测试,以保证代码质量和稳定性。tap-mocha-reporter 是一个可以将 Mocha 测试运行结果输出为 TAP 格式的 npm 包,通过它可以方便...

    6 年前
  • 使用 Travis-after-all 管理 npm 包发布流程

    介绍 Travis-after-all 是一个 npm 包,它可以帮助我们管理 npm 包的发布流程。使用 Travis-after-all 可以在本地环境或者 CI/CD 环境下自动化执行一系列任务...

    6 年前
  • npm包sort-object-keys使用教程

    在前端开发中,我们经常需要对对象进行排序操作,这时候可以使用 sort-object-keys 这个 NPM 包来帮助我们实现。本篇文章将介绍如何安装和使用该包,并提供详细的示例代码。

    6 年前
  • npm 包 prettier-package-json 使用教程

    在前端开发中,我们通常需要对 package.json 文件进行管理,包括添加、更新和删除依赖项、脚本等。然而,手动编辑 package.json 文件往往会导致格式不规范,给代码维护带来诸多麻烦。

    6 年前
  • npm包unexpected-generator使用教程

    简介 unexpected-generator是一个npm包,它可以生成各种不同类型的测试文件。这个工具可以大大简化前端开发人员编写测试代码的过程。 在本文中,我们将深入探讨如何使用unexpecte...

    6 年前
  • npm 包 array-changes-async 使用教程

    简介 array-changes-async 是一个 NPM 包,它可以检测 JavaScript 数组的变化并异步返回变化信息。这个包非常适合在前端开发中使用,尤其是在处理数据驱动的应用程序中。

    6 年前
  • npm 包 babel-helper-fixtures 使用教程

    babel-helper-fixtures 是一个用于编写 Babel 插件测试用例的 npm 包,它可以帮助开发者快速编写和运行插件测试用例,并提供一些常用的测试工具函数。

    6 年前
  • npm 包 babel-helper-transform-fixture-test-runner 使用教程

    在前端开发中,我们经常需要编写测试用例来确保代码的质量和正确性。而在编写测试用例时,我们也需要处理一些较为复杂的情况,比如对于某些特定的代码场景进行转换和处理等。这就需要借助一些工具来帮助我们完成这些...

    6 年前
  • npm 包 babel-preset-es2015-without-strict 使用教程

    什么是 babel-preset-es2015-without-strict? babel-preset-es2015-without-strict 是一个 Babel 插件,它可以将 ES6+ 的代...

    6 年前
  • npm 包 intersect 使用教程

    简介 在前端开发中,常常需要对两个数组取交集或并集。这时候我们可以使用 intersect 这个 npm 包来方便地实现。 此包提供了一些函数用于计算数组的交集、并集和差集等操作。

    6 年前
  • npm 包 eslint-config-defaults 使用教程

    什么是 eslint-config-defaults? eslint-config-defaults 是一个 npm 包,它提供了一组默认的 ESLint 配置规则。

    6 年前
  • npm 包 js-reporters 使用教程

    在前端开发中,我们通常需要对代码进行测试以确保其质量和可靠性。其中一个重要的工具就是测试框架。而 js-reporters 就是一个可定制化的测试报告生成器,它能够与大多数 JavaScript 测试...

    6 年前
  • npm 包 tunnel 使用教程

    在前端开发中,我们常常需要通过 HTTP 或 HTTPS 访问其他服务。但是,在某些情况下,我们可能需要在一个安全的网络环境之外进行开发,这时就需要使用 tunnel 这个 npm 包来解决这个问题。

    6 年前
  • npm 包 browserstack-runner 使用教程

    什么是 browserstack-runner? browserstack-runner 是一个基于 Node.js 的命令行工具,它可以帮助你在不同的浏览器和设备上自动运行测试。

    6 年前
  • npm 包 packrattle 使用教程

    Packrattle 是一个用于实现编译器和解释器的 JavaScript 库。它提供了一组强大的工具,可以帮助开发者轻松地创建自己的编译器或解释器。 安装 使用 npm 命令进行安装: --- --...

    6 年前
  • npm 包 jsstana 使用教程

    介绍 jsstana 是一个基于 AST(抽象语法树)的 JavaScript 代码风格检查工具,它可以分析你的代码并提供关于代码风格、错误和警告的信息。它使用了 Esprima 解析器来解析并生成 ...

    6 年前
  • npm 包 require-globify 使用教程

    在前端开发中,我们经常需要使用多个模块或者组件来完成一个功能。而这些模块和组件可能分布在不同的文件夹中,这时候就需要对这些文件进行逐个引入。这个过程比较繁琐,使得代码可读性差,也容易出错。

    6 年前
  • 使用 Bacon.js 的指南

    Bacon.js 是一个函数式的响应式编程库,它能够让你更加方便地处理异步事件和数据流。在这篇文章中,我们将详细介绍如何使用 npm 包 baconjs 并提供一些示例代码。

    6 年前
  • npm 包 unexpected-bluebird 使用教程

    在前端开发中,我们经常需要处理异步操作。而蓝鸟(Bluebird)是一个流行的实现 Promises/A+ 规范的 JavaScript 库,提供了高效、可读性强且易于维护的异步代码编写方式。

    6 年前

相关推荐

    暂无文章