一. 安装
| |
官方文档: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。详细可以查看官方文档: