# @anatine/zod-mock 中文文档

规范地址：https://npmcn.com/package/%40anatine/zod-mock/

版本：3\.14\.0
npm 元数据更新时间：2025-04-04T15:42:44.861Z
中文译文更新时间：2026-11-06T02:06:03.757Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40anatine/zod-mock
原文对照：https://npmcn.com/package/%40anatine/zod-mock/?lang=original
项目主页：https://github.com/anatine/zod-plugins/tree/main/packages/zod-mock
源码仓库：https://github.com/anatine/zod-plugins

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

- 包体积（解压后）：56.5 kB，13 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- peer 依赖：@faker-js/faker ^7\.0\.0 \|\| ^8\.0\.0 \|\| ^9\.0\.0，zod ^3\.21\.4
- 首次发布：2021-07-11T21:14:55.196Z
- 最新版本发布：2025-04-04T15:42:44.665Z
- 近 30 天下载量：918824（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：56（近 12 个月 0 个）

## 中文简介

使用 Faker 的 Zod 自动模具对象生成器

## 安装

```sh
npm install @anatine/zod-mock
```

也可以使用：`pnpm add @anatine/zod-mock`、`yarn add @anatine/zod-mock`、`bun add @anatine/zod-mock`

## README

# @anatine/zod-mock (韩语)

使用 [伪造者.js](https://www.npmjs.com/package/@faker-js/faker) 从a [佐德语Name](https://github.com/colinhacks/zod) 计划.

* * *

## 安装

`@faker-js/faker` 是同级依赖关系 `@anatine/zod-mock` 用于模拟数据生成.

```shell
npm install zod @faker-js/faker @anatine/zod-mock
```

* * *

## 使用量

### 使用任何 Zod 计划并创建模拟数据

```typescript
import { generateMock } from '@anatine/zod-mock';
const schema = z.object({
      uid: z.string().nonempty(),
      theme: z.enum([`light`, `dark`]),
      email: z.string().email().optional(),
      phoneNumber: z.string().min(10).optional(),
      avatar: z.string().url().optional(),
      jobTitle: z.string().optional(),
      otherUserEmails: z.array(z.string().email()),
      stringArrays: z.array(z.string()),
      stringLength: z.string().transform((val) => val.length),
      numberCount: z.number().transform((item) => `total value = ${item}`),
      age: z.number().min(18).max(120),
    });
const mockData = generateMock(schema);
// ...
```

这将生成模拟数据,类似于:

```json
{
  "uid": "3f46b40e-95ed-43d0-9165-0b8730de8d14",
  "theme": "light",
  "email": "Alexandre99@hotmail.com",
  "phoneNumber": "1-665-405-2226",
  "avatar": "https://cdn.fakercloud.com/avatars/olaolusoga_128.jpg",
  "jobTitle": "Lead Brand Facilitator",
  "otherUserEmails": [
    "Wyman58@example.net",
    "Ignacio_Nader@example.org",
    "Jorge_Bradtke@example.org",
    "Elena.Torphy33@example.org",
    "Kelli_Bartoletti@example.com"
  ],
  "stringArrays": [
    "quisquam",
    "corrupti",
    "atque",
    "sunt",
    "voluptatem"
  ],
  "stringLength": 4,
  "numberCount": "total value = 25430",
  "age": 110
}
```

* * *

## 覆盖字符串模拟

有时可能有理由对字符串值有一个更具体的模拟.

您可以提供一个选项字段来生成匹配密钥会触发的特定模拟数据.

```typescript
const schema = z.object({
  locked: z.string(),
  email: z.string().email(),
  primaryColor: z.string(),
});
const mockData = generateMock(schema, {
  stringMap: {
    locked: () => `this return set to the locked value`,
    email: () => `not a email anymore`,
    primaryColor: () => faker.internet.color(),
  },
});
```

* * *

## 添加种子生成器

为了进行一致的测试,也可以在种子或种子阵列中加入.

```typescript
const schema = z.object({
  name: z.string(),
  age: z.number(),
});
const seed = 123;
const first = generateMock(schema, { seed });
const second = generateMock(schema, { seed });
expect(first).toEqual(second);
```

* * *

## 添加自定义模拟映射器

一旦钻入下方以提供一个字符串,数字,布尔值或其他原始值,一个具有匹配名称的函数会被以假名来搜索.

您可以在选项中添加自己的密钥/fn映射器 .

```typescript

export function mockeryMapper(
  keyName: string,
  fakerInstance: Faker
): FakerFunction | undefined {
  const keyToFnMap: Record<string, FakerFunction> = {
    image: fakerInstance.image.url,
    imageurl: fakerInstance.image.url,
    number: fakerInstance.number.int,
    float: fakerInstance.number.float,
    hexadecimal: fakerInstance.number.hex,
    uuid: fakerInstance.string.uuid,
    boolean: fakerInstance.datatype.boolean,
    // Email more guaranteed to be random for testing
    email: () => fakerInstance.database.mongodbObjectId() + '@example.com'
  };
  return keyName && keyName.toLowerCase() in keyToFnMap
    ? keyToFnMap[keyName.toLowerCase() as never]
    : undefined;
}

const schema = z.object({
  locked: z.string(),
  email: z.string().email(),
  primaryColor: z.string(),
});

const result = generateMock(schema, { mockeryMapper });

```

* * *

## 幕后新闻

**`zod-mock`** 尝试从两个来源生成模拟数据.

-   ### 对象密钥名 ie ()`{ firstName: z.string() }`(中文(简体) )
    
    这将检查密钥的字符串名称与所有可用的 `faker` 函数名称. 匹配时,它利用该函数生成模拟值.
    
-   ### Zod类型 ie ()`const something = z.string()`(中文(简体) )
    
    如果没有密钥名称(schema不包含对象)或密钥名称匹配, `zod-mock` 将使用由 `zod`。 。 。 .
    
    一些zod过滤器类型(电子邮件,uuid,url,min,max,长度)也会修改结果.
    
    若为 **`zod-mock`** 尚不支持您计划中使用的 Zod 类型, 您可以提供备份模拟函数, 用于该特定类型 .
    
    ```typescript
    const schema = z.object({
      anyVal: z.any()
    });
    const mockData = generateMock(schema, {
      backupMocks: {
        ZodAny: () => 'a value'
      }
    });
    ```
    

* * *

## 缺少特征

-   没有将选项传送到 `faker`,例如设置电话号码格式
-   不处理以下 Zod 类型 :
    -   佐德诺
    -   Zod 默认
    -   Zod 函数
    -   Zod 接口
    -   佐德马普
    -   Zod 保证
    -   ZodSet 软件
    -   佐德图普尔
    -   佐德联盟
    -   Zod 未为人知

* * *

## 贷项

-   ### [快速分区- api](https://github.com/RobinTail/express-zod-api)
    
    一个伟大的自由, 提供了一些洞察 处理各种zod类型.
    

* * *

这个库是 nx 单列波的一部分 [@anatine/zod-plugins (韩语)](https://github.com/anatine/zod-plugins)。 。 。 .

## 常见问题

### @anatine/zod-mock 是什么？

使用 Faker 的 Zod 自动模具对象生成器

### 如何安装 @anatine/zod-mock？

在项目目录运行 npm install @anatine/zod-mock，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@faker-js/faker（^7\.0\.0 \|\| ^8\.0\.0 \|\| ^9\.0\.0）、zod（^3\.21\.4）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @anatine/zod-mock 支持 TypeScript 吗？

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

### @anatine/zod-mock 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @anatine/zod-mock 可以商用吗？

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

### @anatine/zod-mock 的下载量有多少？

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

### @anatine/zod-mock 还在维护吗？

最新版本 3\.14\.0 发布于 2025/04/04（1\.6 年前）；至今共发布 56 个版本，其中过去 12 个月发布了 0 个；首次发布于 2021/07/12。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

