生成 Mock 规则
高级 Mock 自定义脚本
js
var responseJson = {}
// 获取请求参数
var properties = fox.mockRequest.getParam('properties');
// 生成 mock 规则数据
var mockRules = {}
for (var i in properties) {
var rule = ''
if (properties[i].mock && properties[i].mock.mock) {
rule = properties[i].mock.mock
} else if (properties[i].enum && properties[i].enum.length > 0) {
var enumStr = properties[i].enum.join("', '")
rule = `@pick(['${enumStr}'])`
}
mockRules[i] = rule
}
responseJson.mockRules = mockRules;
// 将修改后的 json 写入 fox.mockResponse
fox.mockResponse.setBody(responseJson);请求参数(示例)
json
{
"type": "object",
"properties": {
"id": {
"type": "string",
"title": "ID",
"mock": {
"mock": "@integer(1000, 10000000)"
}
},
"name": {
"type": "string",
"title": "名称",
"mock": {
"mock": "@cname"
}
},
"age": {
"type": "string",
"title": "年龄",
"mock": {
"mock": "@integer(1, 100)"
}
},
"type": {
"type": "number",
"title": "类型",
"enum": [
1,
2,
3,
4,
5
],
"x-apifox": {
"enumDescriptions": {
"1": "市级",
"2": "校级",
"3": "教师",
"4": "家长",
"5": "学生"
}
}
},
"enable": {
"type": "boolean",
"default": "true",
"title": "是否可用",
"mock": {
"mock": "@boolean"
}
},
"enable1": {
"type": "string",
"enum": [
"a",
"b"
],
"x-apifox": {
"enumDescriptions": {
"a": "aa",
"b": "bb"
}
},
"title": "是否可用"
}
},
"title": "示例",
"x-apifox-orders": [
"id",
"name",
"age",
"type",
"enable",
"enable1"
],
"required": [
"id",
"name",
"age",
"enable",
"type",
"enable1"
],
"description": "Demo"
}响应结果(示例)
json
{
"mockRules": {
"id": "@integer(1000, 10000000)",
"name": "@cname",
"age": "@integer(1, 100)",
"type": "@pick(['1', '2', '3', '4', '5'])",
"enable": "@boolean",
"enable1": "@pick(['a', 'b'])"
}
}