Mock 调试数据

HG大约 8 分钟

Mock 调试数据

在接口调试时,往往需要填写大量的测试数据来进行请求测试;

有了 Mock 数据的功能,在调试时,自动根据规则生成调试数据,接口调试更高效。

注解方式

只需要在接口注解的QueryParam中加入mock的配置即可

数据表字段 Mock

当我们希望 ref 引用数据表的字段,也能配置字段的 mock 规则,只需要在字段注释中加入mock(xxx)即可,如下:

CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `name` varchar(64) NOT NULL COMMENT '姓名,mock(@cname)',
  `age` varchar(64) DEFAULT NULL COMMENT '年龄,mock(@integer(1, 150))',
PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=23 DEFAULT CHARSET=utf8"

Mock 规则

以下为内置规则,自定义规则请查看自定义 mock 规则

自定义 mock 规则

如果以上内置规则无法满足,你可以通过配置文件自定义规则来实现

1、config.js配置文件中加入自定义规则,如下

window.apidocFeConfig = {
  //...
  MOCK_EXTENDS: {
    abc(a) {
      return `abc-${a}`;
    },
  },
};

2、注解中直接使用

基础

@boolean

随机获得一个 boolean 值

@boolean
// true

@natural

随机获得一个自然数,可指定范围@natural(min, max)

@natural
// 8137814963804528

@natural(10000)
// 7797466542198811

@natural(60, 100)
// 93

@integer

随机获得一个整数,可指定范围@integer(min, max)

@integer
// 2994973617286844

@integer(10000)
// 2405323822479268

@integer(60, 100)
// 80

@float

随机获得一个浮点数,可指定范围@float(min, max, dmin, dmax)

@float
// 7259904392499748

@float(0)
// 8638086838442049

@float(60, 100)
// 87.08081

@float(60, 100, 3)
// 83.6886314

@float(60, 100, 3, 5)
// 69.4772

@character

随机获得一个字符,可指定@character('lower/upper/number/symbol')

  • lower:小写字母
  • upper:大写字母
  • number:数字
  • symbol:符号
@character
// "m"

@character("lower")
// "j"

@character("upper")
// "F"

@string

随机获得一个字符串

  • 指定长度:@string(length)
  • 指定长度范围:@string(min, max)
  • 指定类型与长度:@string('lower/upper/number/symbol', length)
  • 指定类型与长度范围:@string('lower/upper/number/symbol', min, max)
@string
// "PN@ty"

@string(5)
// "#bZSZ"

@string("lower", 5)
// "ryhyx"
@string("upper", 5)
// "MCCMQ"

@string(7, 10)
// "nyBH2rx#R"

@string("lower", 1, 3)
// "nwo"

@range

随机获得一个范围的数组

  • 指定结束的值:@range(stop)
  • 指定开始、结束的值:@range(start, stop)
  • 指定开始、结束、步长:@range(start, stop, step)
@range(10)
// [0,1,2,3,4,5,6,7,8,9]

@range(3, 7)
// [3,4,5,6]

@range(1, 10, 2)
// [1,3,5,7,9]

日期时间

@date

随机获得一个日期

  • 指定格式:@date(format)
@date
// 2013-06-13

@date("yyyy-MM-dd")
// 1999-06-21

@date("yyyy/MM/dd")
// 1983/01/25

@date("yy-MM-dd")
// 98-08-03

@time

随机获得一个时间

  • 指定格式:@time(format)
@time
// 12:02:49

@time("A HH:mm:ss")
// AM 04:57:02

@time("a HH:mm:ss")
// pm 15:40:04

@time("HH:mm:ss")
// 09:35:22

@datetime

随机获得一个时间

  • 指定格式:@datetime(format)
@datetime
// 2010-01-13 23:59:05

@time("A HH:mm:ss")
// AM 04:57:02

@time("a HH:mm:ss")
// pm 15:40:04

@time("HH:mm:ss")
// 09:35:22

@now

随机获得一个以当前为基础的日期时间

  • 指定单位:@now('year/month/week/day/hour/minute/second')
  • 指定格式:@now(format)
@now
// 2021-08-03 10:38:52

@now("year")
// 2021-01-02 00:00:00

@now("month")
// 2021-08-02 00:00:00

@now("week")
// 2021-08-03 00:00:00

@now("day")
// 2021-08-03 00:00:00

@now("hour")
// 2021-08-03 10:00:00

@now("yyyy-MM-dd HH:mm:ss SS")
// 2021-08-03 10:38:52 148

@now('day', 'yyyy-MM-dd HH:mm:ss SS')
// 2021-08-12 00:00:00 000

图片

@image

随机获得一个图片地址

  • 指定内容 @image(size, background, foreground, format, text)
@image
// https://dummyimage.com/200x200

@image('200x100')
// https://dummyimage.com/200x100

@image('200x100', '#FF6600')
// https://dummyimage.com/200x100/FF6600

@image('200x100', '#4A7BF7', 'Hello')
// https://dummyimage.com/200x100/4A7BF7&text=Hello

@image('200x100', '#50B347', '#FFF', 'Apidoc')
// https://dummyimage.com/200x100/50B347/FFF&text=Apidoc

@image('200x100', '#894FC4', '#FFF', 'png', '!')
// https://dummyimage.com/200x100/894FC4/FFF.png&text=!

@dataImage

随机获得一个 base64 图片

  • 指定内容 @dataImage(size, text)
@dataImage
// data:image/png;base64, .....

@dataImage('200x100')
// data:image/png;base64, .....

@dataImage('200x100', 'Hello Apidoc!')
// data:image/png;base64, .....

颜色

@color

随机获得一个颜色值

@color
// #79f2b4

@hex

随机获得一个 hex 格式的颜色值

@hex
// #f279ca

@rgb

随机获得一个 rgb 格式的颜色值

@rgb
// rgb(242, 211, 121)

@rgba

随机获得一个 rgba 格式的颜色值

@rgba
// rgba(242, 211, 121, 0.26)

@hsl

随机获得一个 hsl 格式的颜色值

@hsl
// hsl(299, 82, 71)

文本

@paragraph

随机获得一段文本

  • 指定长度 @paragraph(length)
  • 指定长度范围 @paragraph(min, max)
@paragraph
// "Cmealuulh egeilrl wluugtmeg lcnyripd ulqjency etjwsrtck etpqh cytx mmxuvpn xgltiwn gtlswx pejpey swwbx. Otmggk qwib bjbn xqqbzljhem ogvxyf xzcti ekacgtnwp gfdlnftsz nnop yeqqgro yqhm ofcy nydy cdrpyvj lubjkyeo. Jqmuw chcwnq lenof ebiybquma twvbnsnl grg djurcqmwx ufow hlliuo tenom zevg iuqobks bwkkxh pyhucl ingnlebgz jtodh."

@paragraph(2)
// "Seh tki ycusfroo jzudml yordvd zekp mugpcmm ranej scdyrw gvfuvjpf xgyrmit bfgmjxvju okonu cxfelx tnfmmjt unddrhbbtg wjrkeu. Lwtm rhuh zquqdx vgbxbmu rem cganfovr xcecvzwuf fbsukl tblwib axtavkx kxdn ljws jihbcxino pxtgoq iedlp snhq."

@paragraph(1, 3)
// "Khrquxgdv viabvdx yuzlshy rpeoeh xxqgye lclfasktcl dogp jeiii kyxyxvbb esrv esxa uljsshg. Yhp ejfhlun nce xua keakdu llrqxoq ewnyvcyl ecoinwq iifnejlgme wbkwdhec foxdulztyj fqups zfdlqva ptppkz."

@sentence

随机获得一个句子

  • 指定长度 @paragraph(length)
  • 指定长度范围 @paragraph(min, max)
@sentence
// "Yfdpvct ywneoog tulwe senlh avslxwj ffxjpfeebh knypcz mjpx ucmgqplrb jekmtop qzgsm csqnjg txmxu zmhegfz pwrsmqccs jkhpt."

@sentence(5)
// "Hmayhzx ivrk jxbej vvfmcnuuq zjqdjp."

@sentence(3, 5)
// "Indo rebn ocon ycwpgj."

@word

随机获得一个文本

  • 指定长度 @word(length)
  • 指定长度范围 @word(min, max)
@word
// "bggnypex"

@word(5)
// "fhvqg"

@word(3, 5)
// "xqdy"

@title

随机获得一个标题

  • 指定长度 @title(length)
  • 指定长度范围 @title(min, max)
@title
// "Xbiz Wpkfirxrc Iekbn Hzreio Vksv Mrixhk Krwnf"

@title(5)
// "Luzbtjlr Ochd Mibotdsmri Dcpcr Mthbz"

@title(3, 5)
// "Vtqw Jct Loasetdthg Cghvwuk"

@cparagraph

随机获得一段中文文本

  • 指定长度 @cparagraph(length)
  • 指定长度范围 @cparagraph(min, max)
@cparagraph
// "林律平织代结自术党要真成局。越斯低知称代中区细北表关品断。在增看无片长百活已团布接青争两究西。北打酸心铁相克根八经如再装前角由。容根算打少养严江制社器为我认。无验四口但做西今位制党装用。动也精子照把质被已大才七下想部。"

@cparagraph(5)
// "么办给基率自细程强队社经这千。少立应常须开广情较计体命子动被。"

@cparagraph(3, 5)
// "料难导利极些性通业照周亲员包思认铁。团学细化从查新做来者民细。"

@csentence

随机获得一句中文文本

  • 指定长度 @csentence(length)
  • 指定长度范围 @csentence(min, max)
@csentence
// "约二证年专话采识路验回已难平管解习。"

@csentence(5)
// "见九思达识。"

@csentence(3, 5)
// "转米变。"

@cword

随机获得一个中文文本

  • 指定随机字符 @cword(pool)
  • 指定长度 @cword(length)
  • 指定随机字符、长度 @cword(pool,length)
  • 指定长度范围 @cword(min, max)
  • 指定随机字符、长度范围 @cword(pool, min, max)
@cword
// "合"

@cword('零一二三四五六七八九十')
// "三"

@cword(3)
// "拉等示"

@cword("零一二三四五六七八九十", 3)
// "五六十"

@cword(3, 5)
// "青圆统"

@cword("零一二三四五六七八九十", 5, 7)
// "一三四零二一"

@ctitle

随机获得一个中文标题

  • 指定长度 @ctitle(length)
  • 指定长度范围 @ctitle(min, max)
@ctitle
// "图部称难直记"

@ctitle(5)
// "光派要何给"

@ctitle(3, 5)
// "圆带火带"

姓名

@first

随机获得一个姓

@first
// "Laura"

@last

随机获得一个名

@last
// "White"

@name

随机获得一个姓名

@name
// "James Thompson"

@cfirst

随机获得一个中文姓

@cfirst
// "张"

@clast

随机获得一个中文名

@clast
// "航"

@cname

随机获得一个中文姓名

@cname
// "杜芳"

网络

@url

随机获得一个 url 地址

@url
// "http://atdcptravt.tc/wlrsdlbkwl"

@domain

随机获得一个域名

@domain
// "suix.cn"

@protocol

随机获得一个协议名

@protocol
// "gopher"

@email

随机获得一个 Email

@email
// "p.jldur@hgvxebirz.ca"

@ip

随机获得一个 ip 地址

@ip
// "157.234.240.60"

地址

@region

随机获得一个地区

@region
// "华东"

@province

随机获得一个省份

@province
// "天津"

@city

随机获得一个城市

  • 是否包含省份 @city(prefix)
@city
// "晋中市"

@city(true)
// 吉林省 松原市

@county

随机获得一个县/区

  • 是否包含省份、城市 @county(prefix)
@county
// "芦山县"

@county(true)
// "湖南省 株洲市 攸县"

@zip

随机获得一个邮编

@zip
// "151840"

@zip

随机获得一个邮编

@zip
// "151840"

其它

@pick

指定数组中随机抽取一个值

@pick(["a", "e", "i", "o", "u"])
// "o"

@shuffle

重组数组中值的位置

@pick(["a", "e", "i", "o", "u"])
// ["u","i","o","a","e"]

@guid

获得一个 guid 字符串

@guid
// "D8AA2eAf-DcaD-749c-efAB-de4c826cD6FD"

@id

获得一个 id

@id
// "350000201612198267"

@phone

随机获得一个 11 位手机号

@phone
// "13100667890"

@idcard

随机获得一个 18 位 S·F·Z 号码

@idcard
// "450311198810100505"

@regexp

指定长度 @paragraph(reg, leng)

根据正则生成数据

@regexp('/\[a-z]{5,10}\-/',3)
// "feyoiga-eqiig-pbyriaj-"