一. 安装
|
|
官方文档:https://github.com/nuysoft/Mock/wiki
二. 使用
1. 基本使用
|
|
输出结果:
|
|
2. 语法规范
2.1. 数据模板定义规范
数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:
|
|
- String属性
'name|min-max': string
:通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max。'name|count': string
:通过重复 string 生成一个字符串,重复次数等于 count。
- Number属性
'name|+1': number
:属性值自动加 1,初始值为 number。'name|min-max': number
:生成一个大于等于 min、小于等于 max 的整数,属性值 number 只是用来确定类型。'name|min-max.dmin-dmax': number
:生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分保留 dmin 到 dmax 位。'name|min-max.d': number
:生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分保留 d 位。'name|d': number
:生成一个浮点数,整数部分大于等于 0,小数部分保留 d 位。
- Boolean属性
'name|1': boolean
:随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率也是 1/2。'name|min-max': boolean
:生成一个布尔值,值为 true 的概率是 min / (min + max),值为 false 的概率是 max / (min + max)。
- Object属性
'name|count': object
:从属性值 object 中随机选取 count 个属性。''name|min-max': object
:从属性值 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。
- Function属性
'name': function
:执行函数 function,取其返回值作为最终的属性值,函数的上下文为属性 ’name’ 所在的对象。
- 正则表达式
'name': regexp
:根据正则表达式 regexp 反向生成可以匹配它的字符串。用于生成自定义格式的字符串。
2.2. 占位符定义规范
占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。
占位符 的格式为:
@占位符
@占位符(参数 [, 参数])
|
|
三. Mock.Random
Mock.Random 是一个工具类,用于生成各种随机数据。
Mock.Random 的方法在数据模板中称为『占位符』,书写格式为 @占位符(参数 [, 参数]) 。
|
|
方法
Mock.Random 提供的完整方法(占位符)如下:
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 | area, region |
Helper | capitalize, upper, lower, pick, shuffle |
Miscellaneous | guid, id |
扩展
Mock.Random 中的方法与数据模板的 @占位符 一一对应,在需要时还可以为 Mock.Random 扩展方法,然后在数据模板中通过 @扩展方法 引用。例如:
|
|
1. 基本类型Basic
1.1. boolean
Random.boolean( min?, max?, current? )
:随机生成一个布尔值,值为 true 的概率是 min / (min + max),值为 false 的概率是 max / (min + max)。
|
|
1.2. natural
Random.natural( min?, max? )
:随机生成一个大于等于 0 的整数,整数部分大于等于 min,小于等于 max。
|
|
1.3. integer
Random.integer( min?, max? )
:随机生成一个整数,整数部分大于等于 min,小于等于 max。
|
|
1.4. float
Random.float( min?, max?, dmin?, dmax? )
:随机生成一个浮点数,整数部分大于等于 min,小于等于 max,小数部分保留 dmin 到 dmax 位。
|
|
1.5. character
Random.character( pool? )
:随机生成一个字符,pool 为字符池,如果传入了 ’lower’ 或 ‘upper’、’number’、‘symbol’,表示从内置的字符池从选取:
|
|
|
|
1.6. string
Random.string( pool?, min?, max? )
:随机生成一个字符串,pool 为字符池,如果传入了 ’lower’ 或 ‘upper’、’number’、‘symbol’,表示从内置的字符池从选取。min、max 表示字符串的长度。
|
|
1.7. range
Random.range( start?, stop, step? )
:随机生成一个数组,数组元素从 start 到 stop,步长为 step。
- Random.range( stop )
- Random.range( start, stop )
- Random.range( start, stop, step )
|
|
2. 日期Date
2.1. date
Random.date( format? )
:随机生成一个日期,format 为日期格式,默认值为yyyy-MM-dd
|
|
日期格式:
格式 | 说明 | 示例 |
---|---|---|
yyyy | 完整的年份数字表示,4位 | 1999 或 2003 |
yy | 年份的两位数字表示 | 99 或 03 |
y | 年份的两位数字表示 | 99 或 03 |
MM | 月份的数字表示,带前导零 | 01 到 12 |
M | 月份的数字表示,不带前导零 | 1 到 12 |
dd | 月份中的日期,2位数字,带前导零 | 01 到 31 |
d | 月份中的日期,不带前导零 | 1 到 31 |
HH | 24小时制的小时表示,带前导零 | 00 到 23 |
H | 24小时制的小时表示,不带前导零 | 0 到 23 |
hh | 12小时制的小时表示,不带前导零 | 1 到 12 |
h | 12小时制的小时表示,带前导零 | 01 到 12 |
mm | 分钟,带前导零 | 00 到 59 |
m | 分钟,不带前导零 | 0 到 59 |
ss | 秒,带前导零 | 00 到 59 |
s | 秒,不带前导零 | 0 到 59 |
SS | 毫秒,带前导零 | 000 到 999 |
S | 毫秒,不带前导零 | 0 到 999 |
A | 大写的上午和下午标识 | AM 或 PM |
a | 小写的上午和下午标识 | am 或 pm |
T | 自1970-1-1 00:00:00 UTC以来的毫秒数 | 759883437303 |
2.2. time
Random.time( format? )
:随机生成一个时间,format 为时间格式,默认值为HH:mm:ss
|
|
2.3. datetime
Random.datetime( format? )
:随机生成一个日期和时间,format 为日期时间格式,默认值为yyyy-MM-dd HH:mm:ss
|
|
2.4. now
- Ranndom.now( unit, format )
- Ranndom.now()
- Ranndom.now( format )
- Ranndom.now( unit )
Random.now( format? )
:随机生成一个当前日期和时间
- format(可选),为日期时间格式,默认值为
yyyy-MM-dd HH:mm:ss
- unit(可选),表示时间单位,用于对当前日期和时间进行格式化。可选值有:year、month、week、day、hour、minute、second、week,默认不会格式化。
|
|
其它格式还有Image、Color、Text、Name、Web、Address、Helper、Miscellaneous。详细可以查看官方文档: