开发中经常写一些常用测试数据比较麻烦,mock的话也比较麻烦。所以写了这个测试数据生成的类。
export default class Generater {
private count = 0
private sourceStr =
'奇管类未朋且婚台夜青北队久乎越观落尽形影红爸百令周吧识步希亚术留市半热送兴造谈容极随演收首根讲整式取照办强石古华諣拿计您装似足双妻尼转诉米称丽客南领节衣站黑刻统断福城故历惊脸选包紧争另建维绝树系伤示愿持千史谁准联妇纪基买志静阿诗独复痛消社算更拉东神记处让母父应直字场平报友关放至张认接告入笑内英军候民岁往何度山觉路带万男边风解叫任金快原吃妈变通师立象数四失满战远格士音轻目条呢病始达深完今提求清王化空业思切怎非找片罗钱紶吗语元喜曾离飞科言干流欢约各即指合反题必该论交终林请医晚制球决窢传画保读运及则房早院量苦火布品近坐产答星精视五连司巴见明问力理尔点文几定本公特做外孩相西果走将月十实向声车全信重三机工物气每并别真打太新比才便夫再书部水像眼等体却加电主界门利海受听表德少克代员许稜先口由死安写性马光白或住难望教命花结乐色的一是了我不人在他有这个上们来到时大地为子中你说生国年着就那和要她出也得里后自以会家可下而过天去能对小多然于心学么之都好看起发当没成只如事把还用第样道想作种开美总从无情己面最女但现前些所同日手又行意动方期它头经长儿回位分爱老因很给名法间斯知世什两次使身者被高已亲其进此话常与活正感'
constructor (counterStartNumber: number) {
this.count = counterStartNumber
}
// 生成自增整数
AutoIncreaseInteger () {
return this.count++
}
// 生成随机整数 具有范围约束(min, max)
// min 最小值
// max 最大值
RangeInteger (min: number, max: number) {
const range = max - min
const value = Math.floor(Math.random() * range) + min
return value
}
// 生成随机小数 具有范围约束(min, max, length)
// min 最小值
// max 最大值
// length 小数点后保留位数
RangeFloat (min: number, max: number, length: number) {
const range = max - min
const value = Math.random() * range + min
return value.toFixed(length)
}
// 生成随机邮箱
RandomEmail () {
const prefix = ['@qq', '@163', '@gmail', '@126', '@outlook', '@sina']
const suffix = ['.com', '.cn', '.net', '.org', '.gov']
const email =
this.RangeInteger(100000000, 999999999) +
prefix[this.RangeInteger(0, prefix.length)] +
suffix[this.RangeInteger(0, suffix.length)]
return email
}
// 从sourceStr中生成随机一个指定长度的中文字符串
// length 指定字符串长度
RandomChinese (length: number) {
let str = ''
for (let i = 0; i < length; i++) {
str += this.sourceStr[this.RangeInteger(0, this.sourceStr.length)]
}
return str
}
// 生成随机手机号
RandomPhone () {
const prefix = ['13', '14', '15', '16', '17', '18', '19']
const phone =
prefix[this.RangeInteger(0, prefix.length)] + this.RangeInteger(100000000, 999999999)
return phone
}
// 生成随机一个指定参数中的字符串
// ...strings 指定的字符串组
SpecifiedString (...strings: string[]) {
const map = new Map(Object.entries(strings))
return map.get(this.RangeInteger(0, strings.length) + '')
}
// 生成指定长度的随机 含[a~z]的字符串,
// length 指定字符串长度
// toUpper 首字母是否大写
RandomString (length: number, firstToUpper?: boolean) {
let str = ''
for (let i = 0; i < length; i++) {
if (firstToUpper && i == 1) {
str += String.fromCharCode(this.RangeInteger(97, 123)).toUpperCase()
continue
}
str += String.fromCharCode(this.RangeInteger(97, 123))
}
return str
}
}