Mock.js学习

mock.js

mock规范包含两部分,数据模板定义, 数据占位符定义

数据模板定义DTD

数据模板中的属性由3部分构成,属性名,生成规则,属性值

"name|rule": value
  • 属性名和生成规则之间用 | 分割。
  • 生成规则是可选的
  • 生成规则有7种
  • 生成规则的含义需要依赖属性值来完成
  • 属性值中可以有占位符
  • 属性值还原了最终的初始值和类型
Mock.mock({
    "string| 3": "知道了啊"
})
// 生成一个整数,属性为数字,在1-10位之间
Mock.mock({
    "number|1-10": 100
})
// 生成一个小数,整数区间1-10, 小数部分2-4
Mock.mock({
    "number}1-10.2-4"
})
// step递增 生成一个数组list,初始值为number,step不能为负值
Mock.mock({
    "list|3": [
        {"id|+5": 100}
    ]
})
// 生成一个布尔值
Mock.mock({
    "boolean|1": true
})
// 生成一个布尔值,三分之二为true,三分之一为false
Mock.mock({
    "boolean|1-2": false
})
// 生成一个对象,包含1-2个属性值
Mock.mock({
    "object|1-2": {
        "name": "code",
        "gender": 1,    
        "age": 13,
        "tel": "2123123"
    }
})
// 随机从array中取一个值
Mock.mock({
    "array|1": [1,2,3,4]
})
// 生成重复次数在1-3之间的数组
Mockmmock({
    "array|1-3": [{id: 2, name:32}]
})

数据占位符定义 DPD

占位符只是在属性字符串中占个位置,并不出现在最终的属性值中

  • 用@来标识其后的字符串是占位符
  • 占位符引用的是Mock.Random中的方法,使用方法名大写
  • 通过Mock.Random.extend()来拓展自定义占位符
  • 占位符可以引用数据模板中的属性
  • 占位符会优先引用数据模板的属性
  • 占位符支持绝对路径和相对路径
// @FIRST 和 @first 均可调用 Mock.Random.first(), 使用大写易于区分占位符和字符串
Mock.mock({
     "name": {
         first: '@FIRST', 	// @FIRST 引用 Mock.Random.first()
         last: '@LAST',		// @LAST 引用 Mock.Random.last()
         full: '@first @last' // @first 优先引用数据模版的属性(this.first)
     }
 })
 // =>
 {"name": {
     "first": "Charles",
     "last": "Lopez",
     "full": "Charles Lopez"
 }}

Mock.Random

var Random = Mock.Random
Random.boolean()
Random.boolean(1, 9, true)
// 数据占位符的调用
Mock.mock('@boolean')
Mock.mock('@boolean()')
Mock.mock('@boolean(1, 9, true)')

自定义占位符

// 自定义占位符
Mock.Random.extend({
    constellations: [
    	'白羊座', '金牛座', '双子座', '巨蟹座', '狮子座', '处女座', 
    	'天秤座', '天蝎座', '射手座', '摩羯座', '水瓶座', '双鱼座'
    ],
    constellation: function(date){
        return this.pick(this.constellations)
    }
})
Random.constellation()
// => "水瓶座"
Mock.mock('@CONSTELLATION')
// => "天蝎座"
Mock.mock({ constellation: '@CONSTELLATION'})
// => { constellation: "射手座" }

剩下的是一些api,可以通过查阅文档发现
在apifox上面,有更加方便的mock功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值