MOCK
- 数据模块定义规范(DTD)
- 数据占位符定义规范(DPD)
DTD
- 属性名
- 生成规则
- 属性值
属性名和生成规则用| 分隔。生成规则可选 ,有7中规则
1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|
name|min-max | name|count | name|min-max.dmin-dmax | name|min-max.dcount | name|count.dmin-dmax | name|count.dcount | name|+step |
用法
属性值是字符串'name|min-max':string 生成重复次数大于min小于max的字符串
-
属性值是number
- 'name+1':number属性值自动加1 初始值为number
- 'name|min-max':number 生成>=min <= max的整数 number为类型
- 'name|min-max.dmin-dmax': number 生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分保留 dmin 到 dmax 位。
属性是boolean 'name|1':boolean随机生成一个boolean值 true false各占一半
属性值是对象 Object
- 'name|count'从属性值object 中随机取 count个属性
- 'name|min-max':object从属性值 随机选取min到max个属性
- 属性值是数组Array
- 'name|1': array
从属性值 array 中随机选取 1 个元素,作为最终值。 - 'name|+1': array
从属性值 array 中顺序选取 1 个元素,作为最终值。 - 'name|min-max': array
通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max。 - 'name|count': array
通过重复属性值 array 生成一个新数组,重复次数为 count。
- 'name|1': array
- 属性值为Function
1.'name': function
执行函数 function,取其返回值作为最终的属性值,函数的上下文为属性 'name' 所在的对象。 - 属性值为正则表达式RegExp
1.'name': regexp
根据正则表达式 regexp 反向生成可以匹配它的字符串。用于生成自定义格式的字符串。
DPD
占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。格式如下:
@占位符
@占位符(参数 [, 参数])
- 用 @ 来标识其后的字符串是 占位符。
- 占位符 引用的是 Mock.Random 中的方法。
- 通过 Mock.Random.extend() 来扩展自定义占位符。
- 占位符 也可以引用 数据模板 中的属性。
- 占位符 会优先引用 数据模板 中的属性。
- 占位符 支持 相对路径 和 绝对路径。
Mock.mock({
name: {
first: '@FIRST',
middle: '@FIRST',
last: '@LAST',
full: '@first @middle @last'
}
})
// =>
{
"name": {
"first": "Charles",
"middle": "Brenda",
"last": "Lopez",
"full": "Charles Brenda Lopez"
}
}
占位符
type | method |
---|---|
basic | boolean, natural, integer, float, character, string, range, date, time, datetime, now |
Image | image, dataImage |
Color | color |
Text | paragraph, sentence, word, title, cparagraph, csentence, cword, ctitle |
Name | first, last, name, cfirst, clast, cname |
Web | url, domain, email, ip, tld |
Address | capitalize, upper, lower, pick, shuffle |
Miscellaneous | guid, id |
//使用方式 mock相应请求 返回string对象
Mock.mock(
'http://test/data',{
"userName" : '@name', //模拟名称
"age|1-100":100, //模拟年龄(1-100)
"color" : "@color", //模拟色值
"date" : "@date('yyyy-MM-dd')", //模拟时间
"url" : "@url()", //模拟url
"content" : "@cparagraph()" //模拟文本
}
)
//生成一个对象数组 如截图
Mock.mock('http://test/jsonList', {
'list|1-10': [{
'id|+1': 1,
'email': '@EMAIL',
'regexp4': /\d{5,10}/,
'name': '@cname', //随机产生一个中文的姓名
}],
'country|1':['中国','美国','日本'],
'moblie|1':['13531544954','13632250649','15820292420','15999905612'] //在数组中随机找一个
})
//发送请求
$.ajax({
url:'http://test/data',
dataType:'json',
data:{},
success:function(data){
},
error:function(err) {
}
})
//设置请求时间
Mock.setup({
timeout: 400
})
Mock.setup({
timeout: '200-600'
})