用于 WordPress 开发的默认 Jest 预设。
安装
安装模块
npm install @wordpress/jest-preset-default --save-dev
注意:此软件包需要具有长期支持状态的 Node.js 版本(查看 Active LTS 或 Maintenance LTS 版本)。它不兼容旧版本。
设置
通过 jest.config.json 或 package.json 中的 jest 字段
{
"preset": "@wordpress/jest-preset-default"
}
用法
包含选项的简要说明
moduleNameMapper– 所有包含 CSS 样式的css和scss文件都会被替换为存根。modulePaths– 项目的根目录被用作解析模块时搜索的位置。setupFiles– 在每个测试之前运行代码,用于设置测试环境中所需的全局变量。setupFilesAfterEnv– 在每个测试之前运行代码,为测试框架添加对Console对象和React组件的增强支持。testEnvironment– 默认为所有测试启用jsdom环境。testMatch– 在/test/和/__tests__/子文件夹中搜索测试,还会匹配所有带有.test.*后缀的文件。它会检测带有.js、.jsx、.ts或.tsx后缀的测试文件。与默认的 Jest 配置相比,它不会匹配带有.spec.*后缀的文件。testPathIgnorePatterns– 在搜索测试文件时排除node_modules和vendor目录。transform– 保留默认的 babel-jest 转换器。
使用 enzyme
从历史上看,此软件包曾使用 enzyme,但后来放弃了对它的支持,转而使用 @testing-library/react,主要原因是解除升级到 React 18 的阻碍。
如果你希望使用 enzyme,仍然可以通过手动提供 React 17 适配器来使用它,具体步骤如下。
要安装 enzyme 依赖,请运行:
npm install --save enzyme
要安装 React 17 适配器依赖,请运行:
npm install --save @wojtekmaj/enzyme-adapter-react-17
要使用 React 17 适配器,请在你的 setupFilesAfterEnv 配置中使用以下内容:
// 它会“模拟” enzyme,这样我们可以延迟加载
// 工具函数,直到在测试中导入 enzyme。
// 感谢 @gdborton 在他的文章中分享这项技术:
// https://medium.com/airbnb-engineering/unlocking-test-performance-migrating-from-mocha-to-jest-2796c508ec50.
let mockEnzymeSetup = false;
jest.mock( 'enzyme', () => {
const actualEnzyme = jest.requireActual( 'enzyme' );
if ( ! mockEnzymeSetup ) {
mockEnzymeSetup = true;
// 根据文档为 React 配置 enzyme 3:http://airbnb.io/enzyme/docs/installation/index.html
const Adapter = jest.requireActual(
'@wojtekmaj/enzyme-adapter-react-17'
);
actualEnzyme.configure( { adapter: new Adapter() } );
}
return actualEnzyme;
} );
如果你还将快照测试与 enzyme 一起使用,可能需要通过 enzyme-to-json 软件包添加对它们进行序列化的支持。
要安装该依赖,请运行:
npm install --save enzyme-to-json
最后,你应该将 enzyme-to-json/serializer 添加到 snapshotSerializers 数组中:
{
snapshotSerializers: [ 'enzyme-to-json/serializer' ];
}
参与此软件包的贡献
这是一个独立软件包,是 Gutenberg 项目的一部分。该项目被组织为一个 monorepo。它由多个自包含的软件包组成,每个软件包都有特定用途。此 monorepo 中的软件包会发布到 npm,并被 WordPress 以及其他软件项目使用。
要了解更多关于参与此软件包或整个 Gutenberg 项目贡献的信息,请阅读项目的主要 贡献者指南。