介绍
在前端开发中使用快照测试库(比如Jest)需要在测试输出时将渲染结果序列化为可读的字符串格式。这一过程需要针对不同的 HTML 结构和 CSS 样式自定义“快照序列化器”的输出逻辑,这是一件非常耗时、繁琐的工作。
而 @emotion/snapshot-serializer 是一种基于 emotion 库和 jest-serializer 代码的实现,可以大大简化这一过程。
本文主要介绍 npm 包 @emotion/snapshot-serializer 的使用方法,包括安装、配置和使用等等。
安装
首先需要在项目中安装 @emotion/snapshot-serializer,可以通过以下命令来安装:
npm install @emotion/snapshot-serializer
配置
接下来需要在 Jest 的配置文件中配置 serializer 选项,将测试结果使用该包提供的快照序列化器进行输出。这样配置可以通过两种方法来完成:
1.使用 Jest 配置命令
可以在 Jest 启动命令中指定配置文件的位置,如下所示:
jest --config=jest.config.js
在配置文件中的 serializer 选项指定 @emotion/snapshot-serializer 的路径即可,例如:
module.exports = { snapshotSerializers: ["@emotion/jest/serializer"] };
2.在 Jest 配置文件中手动配置
Jest 的配置文件默认名称为 jest.config.js,可以通过手动添加以下内容来配置:
module.exports = { snapshotSerializers: ["@emotion/jest/serializer"] };
使用
@emotion/snapshot-serializer 的使用非常直接。
只要将期望的结果使用 Jest 的 expect 函数进行断言,然后在测试输出后查看快照对比即可。例如:
import React from "react"; import { render } from "@testing-library/react"; import "@testing-library/jest-dom/extend-expect"; test("Renders component as expected", () => { const { container } = render(<MyComponent title="Hello, World!" />); expect(container).toMatchSnapshot(); });
当执行测试时,@emotion/snapshot-serializer 自动将组件的渲染结果序列化成可读性强的字符串格式文件,然后与先前记录的快照文件进行对比。如果两个文件不一致,则测试将会失败。如果无快照,则会自动生成一个快照。
总结
本文主要介绍了 npm 包 @emotion/snapshot-serializer 的使用教程,包括安装、配置和使用等,其主要作用是基于 emotion 库和 jest-serializer 代码的实现,可快速序列化 UI 渲染结果,从而大大简化了前端开发中的测试工作。如果您对此包感兴趣,可以在实际开发中结合使用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/emotion-snapshot-serializer