| name | apifox-mock-script-gen |
| description | 生成 Apifox Mock 脚本。支持分页/Token验证/异常/延迟/校验。
触发词:
- "生成[xxx]接口的 mock 脚本"
- "/api/... mock 脚本"
- "为接口 xxx 编写 mock 脚本"
核心原则:必须先获取 API 文档,严格按类型生成 Mock 数据。
|
Apifox Mock 脚本生成器
核心原则
⚠️ 无文档不生成!必须先获取 API 文档,才能编写 Mock 脚本。
反模式警示(禁止行为)
反模式1:凭经验猜测数据结构
❌ 听到"营业时间"就认为是 object {monday: "5-18"}
✅ 必须先查看文档,确认是 array 还是 object
反模式2:跳过文档获取步骤
❌ 用户描述需求后直接生成代码
✅ 必须先调用 apifox_get_api_detail 获取文档
反模式3:忽略嵌套类型
❌ 只检查顶层字段 $.data.businessHours 的类型
✅ 必须检查嵌套字段 $.data.businessHours[0].day 的类型
执行流程(强制顺序)
第一阶段:信息收集 🔴 [必须先完成]
1. 🔴 强制:调用 mcp__apifox-api-docs-mcp__apifox_get_api_list
└─ 如果失败,停止并报错:"无法获取接口列表"
2. 🔴 强制:匹配目标接口并获取 apiId
└─ 如果找不到,停止并报错:"未找到目标接口"
3. 🔴 强制:调用 mcp__apifox-api-docs-mcp__apifox_get_api_detail
└─ 如果失败,停止并报错:"无法获取接口详情"
4. 🔴 强制:提取类型定义并创建映射表
└─ 遍历所有字段,记录路径和类型
第二阶段:需求确认(可选)
在获取文档后,向用户确认:
第三阶段:脚本生成(基于文档)
1. 参照类型映射表生成 Mock 数据
2. 根据需求选择代码模式(见 references/code-patterns.md)
3. 为每个字段添加类型注释
第四阶段:质量验证(逐字段检查)
✓ 步骤1:验证 API 调用方式(使用 fox. 前缀)
✓ 步骤2:验证函数调用(handleRequest() 被调用)
✓ 步骤3:🔴 逐字段验证类型(对照类型映射表)
✓ 步骤4:验证嵌套类型(array 元素、object 字段)
✓ 步骤5:验证必填字段(有默认值)
✓ 步骤6:验证注释完整性
类型映射表创建流程
从 API 文档提取类型后,创建类型映射表:
var typeMapping = {
'$.data.code': 'integer',
'$.data.msg': 'string',
'$..data.id': 'integer',
'$.data.description': 'object',
'$.data.description.title': 'string',
'$.data.images': 'array',
'$.data.images[0]': 'string',
'$.data.businessHours': 'array',
'$.data.businessHours[0]': 'object',
'$.data.businessHours[0].day': 'integer',
'$.data.businessHours[0].open': 'string'
};
数据类型严格匹配
| 文档类型 | JavaScript 类型 | Mock 示例 |
|---|
string | String | "测试文本" |
integer | Number (整数) | 123 |
number | Number (浮点) | 123.45 |
boolean | Boolean | true |
array | Array | [1, 2, 3] |
object | Object | { key: 'value' } |
硬约束(必须遵循)
1. API 调用规范
var responseJson = fox.mockResponse.json();
fox.mockResponse.setBody(responseJson);
response.json(data);
res.send(data);
2. 参数获取策略
| HTTP 方法 | 参数位置 | 正确的 API |
|---|
| GET | Query 参数 | fox.mockRequest.getParam(key) |
| POST | JSON Body | fox.mockRequest.body.key |
| ALL | Headers | fox.mockRequest.headers.get(key) |
| ALL | Cookies | fox.mockRequest.cookies.get(key) |
3. 函数调用要求
var handleRequest = function() {
};
handleRequest();
function handleMockRequest(req, res) {
}
标准模板
基础结构
var MockJs = require('mockjs');
var handleRequest = function() {
var responseJson = fox.mockResponse.json();
var page = fox.mockRequest.getParam('page') || '1';
var body = fox.mockRequest.body || {};
responseJson.code = 0;
responseJson.msg = 'success';
responseJson.data = {
page: page,
moduleId: body.module || 1
};
fox.mockResponse.setBody(responseJson);
fox.mockResponse.setDelay(300);
};
handleRequest();
质量检查清单(生成前必查)
阶段0:文档完整性检查 🔴 [前置条件]
阶段1:脚本规范检查
阶段2:数据类型检查 🔴 [核心检查]
阶段3:功能完整性检查
输出格式要求
var MockJs = require('mockjs');
var handleRequest = function() {
var responseJson = fox.mockResponse.json();
var param = fox.mockRequest.getParam('key');
responseJson.code = 0;
responseJson.msg = 'success';
responseJson.data = { };
fox.mockResponse.setBody(responseJson);
fox.mockResponse.setDelay(500);
};
handleRequest();
参考资源
核心文档
- 代码模式库:
references/code-patterns.md - 分页、Token、异常等常见场景的代码模式
- 错误案例库:
references/error-cases.md - 常见错误及解决方案
- API 参考:
references/api-reference.md - 完整的 API 文档
- Mock 脚本指南:
references/mock_script_guide.md - Apifox 官方文档
MCP 工具
mcp__apifox-api-docs-mcp__apifox_get_api_list - 获取接口列表
mcp__apifox-api-docs-mcp__apifox_get_api_detail - 获取接口详情
mcp__apifox-api-docs-mcp__apifox_health_check - 健康检查
使用场景指南
何时读取 code-patterns.md?
- 需要实现分页逻辑时
- 需要添加 Token 验证时
- 需要模拟异常场景时
- 需要使用 Mock.js 生成随机数据时
何时读取 error-cases.md?
- 脚本不生效时
- 获取不到参数时
- 出现类型错误时
- 遇到语法错误时
何时读取 api-reference.md?
- 不确定使用哪个 API 时
- 需要查询 API 参数时
- 需要了解数据类型映射时
- 需要查看完整示例时