mcpField
J
Jest

Jest

官方Agent-ready
github.com开发者工具45.5kjest4 周前更新
代码仓库访问官网

关于 Jest

Jest 是一个开箱即用的 JavaScript 测试框架,内置断言库、模拟工具和覆盖率报告。通过 npx jest 运行测试,支持快照测试以验证输出的一致性,可生成详细的代码覆盖率报告。

主要功能

  1. 01运行 JavaScript 单元测试并提供详细的失败输出
  2. 02使用快照测试验证 UI 组件和对象结构的一致性
  3. 03生成代码覆盖率报告,识别未测试的代码路径
  4. 04内置模拟和间谍功能,无需额外依赖

适用场景

  1. 01编码 Agent 自动化测试套件验证和代码质量检查
  2. 02在持续集成流程中运行单元测试和生成覆盖率报告
  3. 03确保重构后代码行为保持一致性

安装

选择你的系统或包管理器,复制命令到终端运行。

$
npm install -D jest

安装完成后运行jest --version确认安装成功。

命令示例

常用命令按使用顺序排列。

01
npx jest
02
npx jest --coverage

详细介绍

npm 版本 Jest 根据 MIT 许可证发布。 在 Twitter 上关注

GitHub CI 状态 覆盖率状态

Gitpod 已就绪,可开始编写代码

 

README 配图

🃏 令人愉悦的 JavaScript 测试

👩🏻‍💻 开发者开箱即用:全面的 JavaScript 测试解决方案。适用于大多数 JavaScript 项目,无需额外配置。

🏃🏽 即时反馈:快速、交互式的监视模式,仅运行与已更改文件相关的测试文件。

📸 快照测试:捕获大型对象的快照,以简化测试并分析它们随时间的变化。

了解详情,请访问 jestjs.io

目录

快速入门

使用 yarn 安装 Jest:

yarn add --dev jest

或者使用 npm:

npm install --save-dev jest

注意:Jest 文档使用 yarn 命令,但 npm 同样适用。你可以在 yarn 文档的此处比较 yarn 和 npm 命令。

让我们编写一个测试,来测试一个假想的、用于将两个数字相加的函数。首先,创建一个 sum.js 文件:

function sum(a, b) {
  return a + b;
}
module.exports = sum;

然后,创建一个名为 sum.test.js 的文件。这里将包含实际的测试:

const sum = require('./sum');

test('adds 1 + 2 to equal 3', () => {
  expect(sum(1, 2)).toBe(3);
});

将以下部分添加到你的 package.json:

{
  "scripts": {
    "test": "jest"
  }
}

最后,运行 yarn test 或 npm test,Jest 将打印以下消息:

PASS  ./sum.test.js
✓ adds 1 + 2 to equal 3 (5ms)

你已经成功使用 Jest 编写了第一个测试!

此测试使用 expect 和 toBe 来检验两个值是否完全相同。若要了解 Jest 还可以测试哪些内容,请参阅使用匹配器。

通过命令行运行

你可以直接从 CLI 运行 Jest(如果它已在 PATH 中全局可用,例如通过 yarn global add jest 或 npm install jest --global 安装),并使用各种实用选项。

下面介绍如何对匹配 my-test 的文件运行 Jest,使用 config.json 作为配置文件,并在运行结束后显示原生操作系统通知:

jest my-test --notify --config=config.json

若要进一步了解如何通过命令行运行 jest,请参阅 Jest CLI 选项页面。

其他配置

生成基本配置文件

Jest 会根据你的项目向你提出几个问题,并创建一个基本配置文件,为每个选项附上简短说明:

yarn create jest
使用 Babel

若要使用 Babel,请通过 yarn 安装所需依赖:

yarn add --dev babel-jest @babel/core @babel/preset-env

在项目根目录下创建 babel.config.js 文件,将 Babel 配置为以当前版本的 Node 为目标:

// babel.config.js
module.exports = {
  presets: [['@babel/preset-env', {targets: {node: 'current'}}]],
};

Babel 的理想配置取决于你的项目。详情请参阅 Babel 文档。

让 Babel 配置适配 Jest

如果 process.env.NODE_ENV 未设置为其他值,Jest 会将其设为 'test'。你可以在配置中使用该值,有条件地只设置 Jest 所需的编译配置,例如:

// babel.config.js
module.exports = api => {
  const isTest = api.env('test');
  // You can use isTest to determine what presets and plugins to use.

  return {
    // ...
  };
};

注意:安装 Jest 时会自动安装 babel-jest。如果项目中存在 Babel 配置,它会自动转换文件。若要避免此行为,可以显式重置 transform 配置选项:

// jest.config.js
module.exports = {
  transform: {},
};
使用 webpack

Jest 可用于使用 webpack 管理资源、样式和编译的项目。与其他工具相比,webpack 确实会带来一些独特的挑战。请参阅 webpack 指南以开始使用。

使用 Vite

Jest 可用于使用 vite 通过原生 ESM 提供源代码,以支持一些前端工具的项目。vite 是一款固执己见的工具,也提供了一些开箱即用的工作流。由于 vite 的插件系统的工作方式,Jest 尚未获得 vite 的全面支持;不过,也有一些使用 vite-jest 实现 Jest 一流集成的可用示例。由于支持尚不完整,你可能还需要阅读 vite-jest 的限制。请参阅 vite 指南以开始使用。

使用 Parcel

Jest 可用于使用 parcel-bundler 管理资源、样式和编译的项目,方式与 webpack 类似。Parcel 无需任何配置。请参阅官方文档以开始使用。

使用 TypeScript

Jest 通过 Babel 支持 TypeScript。首先,请确保你已按照上文使用 Babel中的说明进行操作。接下来,通过 yarn 安装 @babel/preset-typescript:

yarn add --dev @babel/preset-typescript

然后将 @babel/preset-typescript 添加到 babel.config.js 中的预设列表。

// babel.config.js
module.exports = {
  presets: [
    ['@babel/preset-env', {targets: {node: 'current'}}],
+    '@babel/preset-typescript',
  ],
};

不过,使用 Babel 和 TypeScript 时有一些注意事项。由于 Babel 对 TypeScript 的支持仅限于转译,Jest 在运行测试时不会进行类型检查。如果需要类型检查,可以改用 ts-jest,也可以单独运行 TypeScript 编译器 tsc(或将其作为构建流程的一部分)。

文档

了解更多关于如何使用 Jest 的信息,请访问官方网站!

徽章

向大家展示你正在使用 Jest → tested with jest jest tested jest

[![tested with jest](https://img.shields.io/badge/tested_with-jest-99424f.svg?logo=jest)](https://github.com/jestjs/jest)
[![jest tested](https://img.shields.io/badge/Jest-tested-eee.svg?logo=jest&labelColor=99424f)](https://github.com/jestjs/jest)
[![jest](https://jestjs.io/img/jest-badge.svg)](https://github.com/jestjs/jest)

贡献

Jest 的开发在 GitHub 上公开进行。我们感谢社区为修复 Bug 和改进项目所做的贡献。阅读下文,了解如何参与改进 Jest。

行为准则

Facebook 已采用行为准则,并期望项目参与者遵守。请阅读完整文本,了解哪些行为会被容忍,哪些不会。

贡献指南

阅读我们的贡献指南,了解我们的开发流程、如何提出 Bug 修复和改进建议,以及如何构建和测试你对 Jest 所做的更改。

适合新手的议题

为了帮助你熟悉我们的贡献流程,我们整理了一份适合新手的议题列表,其中包含范围相对有限的 Bug。这是很好的入门方式。

鸣谢

本项目的存在离不开所有贡献者。

README 配图

支持者

感谢所有支持者!🙏

README 配图

赞助商

成为赞助商,为本项目提供支持。你的徽标会显示在这里,并附上指向你网站的链接。

README 配图 README 配图 README 配图 README 配图 README 配图 README 配图 README 配图 README 配图 README 配图 README 配图

许可证

Jest 采用 MIT 许可证。

版权

Jest 项目贡献者版权所有。

评论

支持 Markdown