跳到主要内容

MockPlugin

MockPluginbeforeValidate 阶段向 OpenAPI Schema 中注入 mock 数据提示(examples、x-faker 注解、defaults),使 keq mock 命令能够生成更贴近真实业务场景的模拟数据。

配置方法

.keqrc.ts
import { defineKeqConfig } from "@keq-request/cli"
import { MockPlugin } from '@keq-request/cli/plugins'

export default defineKeqConfig({
  outdir: "./src/apis",
  modules: {
    catService: "./cat-service-swagger.json",
  },
  plugins: [
    new MockPlugin([
      {
        given: '$.components.schemas.Cat.properties.name',
        then: { faker: 'person.firstName' },
      },
      {
        given: '$.components.schemas.Cat.properties.age',
        when: { type: 'number' },
        then: { faker: 'number.int', args: [{ min: 1, max: 20 }] },
      },
      {
        given: '$.components.schemas.Cat.properties.breed',
        then: { example: 'Siamese' },
      },
    ]),
  ],
})

规则定义

每条规则由 givenwhen(可选)和 then 三部分组成:

字段类型必填描述
givenstringJSONPath 表达式,定位目标 Schema 节点
whenobject匹配条件,仅当 Schema 满足条件时应用规则
when.typestring | string[]匹配 Schema 的 type 字段
when.formatstring匹配 Schema 的 format 字段
thenobject注入的 mock 数据提示,支持三种模式

then 支持的模式

  • { example: unknown } — 直接指定固定示例值
  • { faker: string; args?: unknown } — 使用 json-schema-faker 的 faker 方法生成数据
  • { default: unknown } — 设置默认值
提示

MockPlugin 仅对未显式定义 exampleexamplesenumconstx-faker 的 Schema 节点生效,不会覆盖已有的值。