# jest-mock 中文文档

规范地址：https://npmcn.com/package/jest-mock/

版本：30\.5\.2
npm 元数据更新时间：2026-09-18T13:56:32.270Z
中文译文更新时间：2026-11-05T15:53:09.712Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/jest-mock
原文对照：https://npmcn.com/package/jest-mock/?lang=original
项目主页：https://github.com/jestjs/jest#readme
源码仓库：https://github.com/jestjs/jest

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：53.3 kB，6 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：^18\.14\.0 \|\| ^20\.0\.0 \|\| ^22\.0\.0 \|\| \>=24\.0\.0
- 运行依赖：4 个
- 首次发布：2016-03-16T23:20:56.405Z
- 最新版本发布：2026-09-18T13:56:32.038Z
- 近 30 天下载量：312301743（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：255（近 12 个月 6 个）

## 中文简介

**说明:** 用户端 API 的更多细节可见于 [最佳文档](https://jestjs.io/docs/mock-function-api)。 。 。 .

## 安装

```sh
npm install jest-mock
```

也可以使用：`pnpm add jest-mock`、`yarn add jest-mock`、`bun add jest-mock`

## README

# 鸡尾酒

**说明:** 用户端 API 的更多细节可见于 [最佳文档](https://jestjs.io/docs/mock-function-api)。 。 。 .

## API 密码

```js
import {ModuleMocker} from 'jest-mock';
```

### `constructor(global)`

创建一个新的模块模拟器,生成模拟器,仿佛它们是在与给定的全局对象一起的环境里创建的.

### `generateFromMetadata(metadata)`

基于给定的元数据生成一个模拟( 用于模拟的元数据 ) `getMetadata()` 本单元的方法)。 模拟函数特别处理函数,所有模拟函数都有额外的成员,在文档中描述 `fn()` 本单元中.

一个重要的注意:功能原型由这个嘲弄框架专门处理. 对于有原型的功能,被叫作构造器时,模型会以实例安装被模拟的功能成员. 这允许同一构造器的不同实例对其模拟成员及其返回值具有不同的值.

### `getMetadata(component)`

检查参数,并以下列递归格式返回其方案:

```
{
  type: ...
  members: {}
}
```

类型之一 `array`, (中文(简体) ), `object`, (中文(简体) ), `function`,或 `ref`,而成员是一个可选词典,其中密钥为成员名而值为元数据对象. 函数原型通过定义元数据定义 `member.prototype` 函数。 函数原型的型号应该总是 `object`例如,一个类别可以这样定义:

```js
const classDef = {
  type: 'function',
  members: {
    staticMethod: {type: 'function'},
    prototype: {
      type: 'object',
      members: {
        instanceMethod: {type: 'function'},
      },
    },
  },
};
```

元数据也可能包含对同一元数据对象所定义的其他对象的引用. 参考方的元数据必须标明 `refID` 键和任意值。 裁判员必须用 `ref` 键,其值与它所指的重置ID对象相同。 例如,这个元数据blob:

```js
const refID = {
  type: 'object',
  refID: 1,
  members: {
    self: {ref: 1},
  },
};
```

定义带有槽的对象 `self` 指的是对象.

### `fn(implementation?)`

与帮助驱动单位测试或确认预期的成员生成独立的功能. 具体地说,通过这种方法返回的职能成员如下:

##### `.mock`

有三名成员的天体, `calls`, (中文(简体) ), `instances` 财务报告和审定财务报表 `invocationCallOrder`,这些都是列表。 二、《公约》项目 `calls` 列表是函数被调用的参数。 "Intances"列表存储每个调用函数的"This"值. 这对于从构建者那里获取实例是有用的 。 这个 `invocationCallOrder` 从 1 开始, 列出模拟调用所有模拟调用的顺序 .

##### `.mockReturnValueOnce(value)`

将给定值推入函数返回值的 FIFO 队列.

##### `.mockReturnValue(value)`

设置函数的默认返回值.

##### `.mockImplementationOnce(function)`

将给定的模拟执行推入函数模拟执行的 FIFO 队列.

##### `.mockImplementation(function)`

设置函数的默认模拟执行.

##### `.mockReturnThis()`

用于:

```js
mockFn.mockImplementation(function () {
  return this;
});
```

以防两者皆有 `.mockImplementationOnce()` 编号 : `.mockImplementation()` 财务报告和审定财务报表 `.mockReturnValueOnce()` 编号 : `.mockReturnValue()` 被调用。 优先使用的依据是最后的呼叫:

-   如果最后的电话是 `.mockReturnValueOnce()` 或者说 `.mockReturnValue()`,使用特定返回值或默认返回值。 如果使用特定返回值, 或者没有设置默认返回值, 请倒回尝试 `.mockImplementation()`· ;
-   如果最后的电话是 `.mockImplementationOnce()` 或者说 `.mockImplementation()`,运行特定执行并返回结果或运行默认执行并返回结果.

##### `.withImplementation(function, callback)`

暂时地在回调中推翻了默认的模拟执行,再恢复之前的执行.

如果回调为 Aync 或返回 a `thenable`, (中文(简体) ), `withImplementation` 将返回一个承诺。 等待承诺将等待召回并重新确定执行.

## 常见问题

### jest-mock 是什么？

说明: 用户端 API 的更多细节可见于 最佳文档。 。 。 \.

### 如何安装 jest-mock？

在项目目录运行 npm install jest-mock，或使用 pnpm add / yarn add / bun add。

### jest-mock 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### jest-mock 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### jest-mock 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js ^18\.14\.0 \|\| ^20\.0\.0 \|\| ^22\.0\.0 \|\| \>=24\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### jest-mock 可以商用吗？

jest-mock 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### jest-mock 的下载量有多少？

根据 npm 官方下载统计，jest-mock 在 2026/10/07 – 2026/11/05 这 30 天内被下载 312,301,743 次，日均约 10,410,058 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### jest-mock 还在维护吗？

最新版本 30\.5\.2 发布于 2026/09/18（1 个月前）；至今共发布 255 个版本，其中过去 12 个月发布了 6 个；首次发布于 2016/03/17。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

