Mock.js+EasyMock
Mock.js 是用于生成随机数据,拦截 Ajax 请求。 通过拦截 Ajax 请求,根据数据模板生成并返回模拟数据,让前端攻城师独立于后端进行开发,帮助编写单元测试。
一、安装: 1.新建文件夹mockjs 进行初始化 npm init -y 2.mock.js安装 npm install mockjs 3.创建的demo01.js
const Mock = require('mockjs')
const data = Mock.mock({
'memberList|2': [
{
'id': 1,
'name': '张三'
}]
})
console.log(JSON.stringify(data, null, 2))
4.执行命令 node demo1.js
二、数据模板定义
'name|rule': value
2.1 属性值是字符串 String
- ‘name|count’: string
通过重复 string 生成一个字符串,重复次数等于 count 。 - ‘name|min-max’: string
通过重复 string 生成一个字符串,重复次数大于等于 min ,小于等于 max 。
.2.2 数字 Number
- ‘name|+1’: number
属性值自动加 1,初始值为 number 。 - ‘name|min-max’: number
生成一个大于等于 min 、小于等于 max 的整数,属性值 number 只是用来确定类型。 - ‘name|min-max.dmin-dmax’: number
生成一个浮点数,整数部分大于等于 min 、小于等于 max ,小数部分保留 dmin 到 dmax 位。
2.3 布尔型 Boolean
- ‘name|1’: boolean
随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率同样是 1/2。 - ‘name|min-max’: value
随机生成一个布尔值,值为 value 的概率是 min / (min + max) ,值为 !value 的概率是 max / (min + max) 。
2.4 对象 Object
- ‘name|count’: object
从属性值 object 中随机选取 count 个属性。 - ‘name|min-max’: object
从属性值 object 中随机选取 min 到 max 个属性。
2.5 数组 Array
- ‘name|min-max’: array
通过重复属性值 array 生成一个新数组,重复次数大于等于 min ,小于等于 max 。 - ‘name|count’: array
通过重复属性值 array 生成一个新数组,重复次数为 count 。
2.6 正则表达式 RegExp
- ‘name’: regexp
根据正则表达式 regexp 反向生成可以匹配它的字符串。用于生成自定义格式的字符串。 注意 regexp 是没有引号的
三、 数据占位符定义规范 DPD Mock.Random 是一个工具类,用于生成各种随机数据。 Mock.Random 类中的方法在数据模板中称为『占位符』 书写格式为 @占位符(参数 [, 参数]) 。
'属性名': @占位符
Type(类型) | Method(占位符) |
---|
Basic | boolean , natural (自然数,大于等于 0 的整数), integer , float , character , string , range (整型数组), | Date | date (年月日), time (时分秒), datetime (年月日时分秒) | 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 | area, region | Helper | capitalize, upper, lower, pick, shuffle | Miscellaneous | guid, id |
'birthday': '@date',
'entryDate': '@date("yyyy/MM/dd")',
'createDate': '@datetime',
'updateDate': '@datetime("yyyy/MM/dd HH:mm:ss")',
'title': '@ctitle(3, 6)',
'content': '@csentence(8, 12)',
'first': '@cfirst',
'last': '@last',
'url': '@url("http", "mengxuegu.com")',
'area': '@region',
'address': '@county(true)',
'zipCode': '@zip'
'email': '@email'
|