用于 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 项目贡献的信息,请阅读项目的主要 贡献者指南。