mock语法

mock语法

一. 数据模板组成:

属性名 name|生成规则rule:属性值value
'name|rule':value

注:

属性名与生成规则之前用竖线 | 分隔
生成规则的含义 需要依赖属性值的类型才能确定
属性值value中可以含有@占位符

二. 生成规则

'name|min-max': value
'name|count': value
'name|min-max.dmin-dmax': value
'name|min-max.dcount': value
'name|count.dmin-dmax': value
'name|count.dcount': value
'name|+step': value

注:

 · dmin最少小数位,dmax最多小数位 
 · step递增 
 · dcount固定位数的小数位

三. 不同属性值对应的规则

1.字符串 String

 'name|min-max':string  重复string,次数为min-max
 'name|count:string'  重复string ,次数为count

2.数字 Number

'name|+1':number     #值加1,初始值为number
'name|min-max':number      #生成一个min-max之前的整数
'name|min-max.dmin-dmax':number      #生成一个浮点数,整数部分在min-max之间,小数部分扣留dmin-dmax位
'name|count.dcount':number     #生成一个整数部分为count,保留dcount位小数的数

3.布尔值 Boolean

'name|1': boolean          #随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率同样是 1/2。
'name|min-max': value      #随机生成一个布尔值,值为 value 的概率是 min / (min + max),值为 !value 的概率是 max / (min + max)。

4.对象 Object

 'name|count': object     #从属性值object中随机选取 count 个属性。
 'name|min-max': object   #从属性值object中随机选取min到max个属性。

5.数组 Array

'name|1': array    #从属性值 array 中随机选取 1 个元素,作为最终值。
'name|+1': array'    #从属性值 array 中顺序选取 1 个元素,作为最终值。
'name|min-max': array   #通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max。
'name|count': array     #通过重复属性值 array 生成一个新数组,重复次数为 count。

6.正则表达式 regExp

根据正则表达式反向生成可以匹配字符串,用于生成自定义格式的字符串。

Eg:

Mock.mock({
	'regexp1':/\d{5,10}/,   //561659409
    'tel':/^1[3456789]\d{9}/   //18856908532
})

四、模拟数据

let testData = mock.mock({
  'list|1-10':[{
    'id:+1':1,
    'tel':/^1[3456789]\d{9}/,
    'address|1':['四川','北京','上海','广州'],
  }]
})

生成结果:

list: [
	{id: 1, tel: "16727875239", address: "四川"},
	{id: 2, tel: "18795168450", address: "上海"}
]

五、数据占位符规范

1.使用的两种方法

Random.xxx() //使用Random函数
Mock.mock('@xxx') // 使用占位符

2. Random方法总结

Random.boolean()   随机布尔值
Random.natural( min?, max? )  随机自然数 min-max之间
Random.integer( min?, max? )  随机整数min-max之间
Random.float()   随机浮点数
Random.character( pool? )   随机字母  pool对应有(lower[小写]/upper[大写]/number[数字]/symbol[符号])
Random.string( pool?, min?, max? )   随机字符串
Random.range(start?, stop, step?)   随机范围数字组成的数组
Random.date( format? )  随机日期
Random.time( format? )  随机时间
Random.datetime( format? )  随机日期+时间
Random.now( unit?, format? )  当前时间
Random.image( size?, background?, foreground?, format?, text? )  图片占位
Random.dataImage( size?, text? )  生成base64格式图片
Random.color()  随机颜色
Random.rgb()  随机rgb颜色
Random.rgba()   rgba颜色值
Random.paragraph( min?, max? )   段落
Random.sentence()
Random.word( min?, max? )
Random.title( min?, max? )
Random.cparagraph( min?, max? )   中文段落
Random.csentence( min?, max? )   中文句子
Random.cword( pool?, min?, max? )  汉字
Random.ctitle( min?, max? ) 标题
Random.first() 姓
Random.last()  名
Random.name( middle? )  姓名
Random.cfirst()  中文姓
Random.clast()  中文名
Random.cname()  中文姓名
Random.url()  随机URL
Random.domain()  随机域名
Random.protocol()
Random.email()  邮箱
Random.region()
Random.province()  省
Random.city( prefix? )  市   (prefix是否带前缀省,值为boolean)
Random.county( prefix? )  区县  (prefix是否带缀省,市)
Random.increment( step? )  递增

六、数据模拟实例

let testData = []
for(let i =0;i<10;i++){
  testData.push(mock.mock({
    'id':mock.mock('@id'),
    'userName':mock.mock('@cname'),
    'age|18-45':1,
    'gender|1':['男','女'],
    'addr':mock.mock('@city(true)'),
  }))
}
console.log(testData)

生成结果:

[
	{id: "230000199503251711", userName: "田刚", age: 32, gender: "女", addr: "陕西省 安康市"}
	{id: "220000198911247467", userName: "卢刚", age: 22, gender: "女", addr: "重庆 重庆市"}
	{id: "630000199203303369", userName: "黄超", age: 30, gender: "女", addr: "上海 上海市"}
	{id: "32000019900306070X", userName: "任超", age: 41, gender: "女", addr: "云南省 怒江傈僳族自治州"}
	{id: "370000201106237773", userName: "金刚", age: 20, gender: "男", addr: "香港特别行政区 新界"}
	{id: "150000200106151982", userName: "汤涛", age: 22, gender: "女", addr: "海南省 海口市"}
	{id: "630000201610178622", userName: "康伟", age: 34, gender: "女", addr: "天津 天津市"}
	{id: "32000019860919883X", userName: "吕艳", age: 41, gender: "女", addr: "山西省 晋城市"}
	{id: "510000198203211040", userName: "丁霞", age: 38, gender: "男", addr: "山东省 烟台市"}
	{id: "220000197505283433", userName: "叶超", age: 33, gender: "女", addr: "河南省 南阳市"}
]

详细mockJS相关:
https://www.kancloud.cn/sophie_u/mockjs/532225

在线制作mock并生成数据 json文件
https://www.fastmock.site/#/

上一篇:sqlserver安装之后,SSMS远程连接连接不上的问题解决:请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接


下一篇:Android 单元测试之PowerMock,字节跳动面试