mock.js的运用

一:概念

Mock.js是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试。提供了以下模拟功能:

  • 根据数据模板生成模拟数据
  • 模拟 Ajax 请求,生成并返回模拟数据
  • 基于 HTML 模板生成模拟数据

官网: http://mockjs.com/

二:安装

cnpm install mockjs

三:数据模板定义规范DTD

数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值

// 属性名 name
// 生成规则 rule
// 属性值 value
‘name|rule’: value

属性名 和 生成规则 之间用竖线 | 分隔。生成规则 是可选的。生成规则 有 7 种格式:

‘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

生成规则的含义需要依赖属性值的类型才能确定。属性值 中可以含有 @占位符。属性值 还指定了最终值的初始值和类型.

// 使用 Mock
let Mock = require('mockjs')
let data = Mock.mock({
    'list|5‐10': [{
        'id|+1': 1,
        'name|2‐3':'测试',
        'phone|11':'1',
        'point|122‐500':0,
        'money|3000‐8000.2':0,
        'status|1':true,
        'default|1‐3':true,
        'detail|2‐3':{'id':1,'date':'2005‐01‐01','content':'记录'}
    }]
})
// 输出结果
console.log(JSON.stringify(data,null,2))
1.属性值是string

'name|count': string: ‘phone|11’:‘1’
通过重复 string 生成一个字符串,重复次数等于 count

'name|min-max': string: ‘name|2‐4’:‘测试’
通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max

2.属性值是number

'name|+1': number: ‘id|+1’: 1
属性值自动加 1,初始值为 number

'name|min-max': number: ‘point|122‐500’:0
生成一个大于等于 min、小于等于 max 的整数,属性值 number 只是用来确定类型

'name|min-max.dcount': value: ‘money|3000‐8000.2’:0
生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分为dcount位

'name|min-max.dmin-dmax': number: ‘money2|1000‐5000.2‐4’:0
生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分保留 dmin 到dmax 位

3.属性值是boolean

'name|1': boolean : ‘status|1’:true
随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率同样是 1/2

'name|min-max': value : ‘default|1‐3’:true
随机生成一个布尔值,值为 value 的概率是 min / (min + max)

4.属性值是Object

'name|count': object : ‘detail|2’:{‘id’:1,‘date’:‘2005‐01‐01’,‘content’:‘记录’}
从属性值 object 中随机选取 count 个属性

'name|min-max': object : ‘detail|2‐3’:{‘id’:1,‘date’:‘2005‐01‐01’,‘content’:‘记录’}
从属性值 object 中随机选取 min 到 max 个属性

5.属性值是array

'name|count': array
通过重复属性值 array 生成一个新数组,重复次数为 count

'name|min-max': array : ‘list|5‐10’: [{…}]
通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max

四:数据占位符定义规范DPD

Mock.Random 是一个工具类,用于生成各种随机数据。Mock.Random 的方法在数据模板中称为『占位符』,书写格式为 @占位符(参数 [, 参数]) 。内置方法列表:

Type**Method**
Basicboolean, natural, integer, float, character, string, range, date,time, datetime, now
Imageimage, dataImage
Colorcolor
Textparagraph, sentence, word, title, cparagraph, csentence,cword, ctitle
Namefirst, last, name, cfirst, clast, cname
Weburl, domain, email, ip, tld
Addressarea, region,county
Helpercapitalize, upper, lower, pick, shuffle
Miscellaneousguid, id

示例:

// 使用 Mock
let Mock = require('mockjs')
let data = Mock.mock({
    'list|10': [{
        'id|+1': 1,
        'name':'@cname',
        'ename':'@last',
        'cfirst':'@cfirst',
        'point':'@integer',
        'birthday':'@date',
        'pic':'@image',
        'title':'@title',
        'content':'@cword(100)',
        'url':"@url",
        'ip':"@ip",
        'email':"@email",
        'area':'@region',
        'address':'@county(true)'
    }]
})
// 输出结果
console.log(JSON.stringify(data,null,2))
1.基本方法

string 字符串: ‘name’:’@string’
integer 整数: ‘point’:’@integer’
date 日期: ‘birthday’:’@date’
可以生成随机的基本数据类型

2.图像方法

'pic':'@image'
image 随机生成图片地址

3.文本方法

@title: 标题 : ‘title’:’@title’
@cword(100) :文本内容 参数为字数 : ‘content’:’@cword(100)’

4.名称方法

cname :中文名称 : ‘name’:’@cname’
cfirst:中文姓氏 : ‘cfirst’:’@cfirst’
Last:英文姓氏 : ‘ename’:’@last’

5.网络方法

可以生成url ip email等网络相关信息
'url':"@url"
'ip':"@ip"
'email':"@email"

5.地址方法

@region 区域 : ‘area’:’@region’
@county 省市县 : ‘address’:’@county(true)’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值