基于 mockjs 扩展生成随机数据
npm install mockjs-extend --save-dev
yarn add mockjs-extend -D
pnpm add mockjs-extend -D
// Mockjs 等同于 mockjs 模块,同时扩展了大量的模拟数据
import { Mockjs } from 'mockjs-extend';
export default {
'POST xxx/xxx': Mockjs.mock({
errCode: '0000',
errMsg: 'mock success',
'data|2-10': [
{
bankCode: '@bankCode', // 银行编码
bankName: '@bankName', // 银行名称
cardNo1: '@bankCardNo', // 银行卡号
cardNo2: '@bankCardNo(true)', // 银行卡号脱敏
cardNo3: '@bankCardNo(false, true)', // 银行卡号格式化
bankCardBin: '@bankCardBin', // 银行卡 bin
swiftCode: '@swiftCode', // SWIFT CODE
bankBranchCode: '@bankBranchCode', // 分行代码
cardType: '@cardType', // 银行卡类型
cardTypeName: '@cardTypeName', // 银行卡类型名称
globalBankName: '@globalBankName', // 英文国际银行名称
cglobalBankName: '@cglobalBankName', // 中文国际银行名称
utc: '@utc', // utc格式日期时间
nid: '@nid', // 指定长度的随机数字字符串
sid: '@sid', // 指定长度的随机字符字符串
mobile: '@mobile', // 手机号码
tel: '@tel', // 电话号码
age: '@age', // 年龄
money: '@money', // 金额
rate: '@rate', // 费率
sn: '@sn', // 数字字符串
country: '@country', // 英文国家名称
ccountry: '@ccountry', // 中文国家名称
countryCode: '@countryCode', // 国家三字码
countryCode2: '@countryCode2', // 国家二字码
currency: '@currency', // 货币编码
currencyName: '@currencyName', // 货币名称
currencySymbol: '@currencySymbol', // 货币符号
uid: '@uid', // 统一社会信用代码
company: '@company', // 英文公司名称
ccompany: '@ccompany', // 中文公司名称
icp: '@icp' // ICP备案号
}
]
})
};
- mock/util.ts
import { MockUtilClass } from 'mockjs-extend';
const mockUtil = new MockUtilClass({
// 模拟请求延迟时间
delay: 500,
// 响应数据发送方法
sendMethod: 'send',
// 响应基本数据结构
responseBasic: {
code: '0000',
message: 'mock success'
},
// 响应分页数据结构
responsePage(pageData) {
return {
pageNum: 1,
pageSize: 10,
'total|15-100': 20,
'pages|2-10': 2,
'data|10': [pageData]
};
}
});
export default mockUtil;
- mock/login.mock.ts
import mockUtil from './utils';
export default {
'POST /api/login': mockUtil.mockData({
data: {
username: '@cname',
mobile: '@mobile',
token: '@guid'
}
})
};
- mock/user.mock.ts
import mockUtil from './utils';
export default {
'POST /api/user/list': mockUtil.mockPageData({
id: '@sid',
username: '@cname',
mobile: '@mobile',
email: '@email'
})
};
由于生成数据没有关联性,例如 @bankCode
@bankName
等。如果你需要生成的数据有关联性,可以使用下列方法获取随机数据对象。
import {
getRandomCurrency,
getRandomCountry,
getRandomGlobalBank,
getRandomBankCard
} from 'mockjs-extend';
console.log(getRandomCurrency());
// { code: 'SEK', desc: '瑞典克朗', symbol: 'Kr', flagId: 'se' }
console.log(getRandomCountry());
// { alpha2: 'GB', alpha3: 'GBR', cn: '英国', en: 'United Kingdom' }
console.log(getRandomGlobalBank());
// { cn: '住友信托银行', en: 'Sumitomo Trust & Banking' }
console.log(getRandomBankCard());
// { bankName: '吉林银行', bankCode: 'JLBANK', cardBin: '622178', cardType: 'CC', cardTypeName: '信用卡', len: 16 }
使用 Mockjs.Random.exted 扩展。
银行编码
Mockjs.Random.bankCode(); // => ICBC
Mockjs.Random.bankCode(); // => URB
银行名称
Mockjs.Random.bankName(); // => 哈尔滨银行
Mockjs.Random.bankName(); // => 乌海银行
银行卡号
- mask
脱敏。可选。
- format
格式化。可选。
Mockjs.Random.bankCardNo(); // 5156729973651523
Mockjs.Random.bankCardNo(true); // 515672******1523
Mockjs.Random.bankCardNo(true, true); // 5156 72** **** 1523
银行卡 bin
Mockjs.Random.bankCardBin(); // => 526410
SWIFT CODE
Mockjs.Random.swiftCode(); // => JYSQJSKA
分行代码
Mockjs.Random.bankBranchCode(); // => IYX
银行卡类型
Mockjs.Random.cardType(); // => CC
银行卡类型名称
Mockjs.Random.cardTypeName(); // => 储蓄卡
英文国际银行名称
Mockjs.Random.globalBankName(); // => Dresdner Bank
中文国际银行名称
Mockjs.Random.cglobalBankName(); // => 大通曼哈顿银行
utc格式日期时间
Mockjs.Random.utc(); // => 1990-03-27T22:46:57.409Z
Mockjs.Random.utc(); // => 2002-09-22T09:49:36.91Z
指定长度的随机数字字符串
Mockjs.Random.nid(); // => 29573221
Mockjs.Random.nid(5); // => 07174
指定长度的随机字符字符串
Mockjs.Random.sid(); // => s8ZHTdHr
Mockjs.Random.sid(5); // => kYOiT
电话号码
Mockjs.Random.tel(); // => 37316547
手机号码
Mockjs.Random.phone(); // => 17837351484
手机号码,同 phone
Mockjs.Random.mobile(); // => 14561418878
年龄
Mockjs.Random.age(); // => 18
金额,默认 2 位小数点
Mockjs.Random.money(); // => 128.41
// 不要小数点
Mockjs.Random.money(0); // => 326
// 自定义最大最小值
Mockjs.Random.money(2, 100, 1000); // => 843
费率,默认 2 位小数点
Mockjs.Random.rate(); // => 0.41
// 4位小数点
Mockjs.Random.rate(4); // => 0.1326
// 自定义最大最小值
Mockjs.Random.rate(2, 0, 5); // => 1.83
数字字符串,默认 2 位小数点
Mockjs.Random.sn(); // => "0.41"
// 4位小数点
Mockjs.Random.sn(4); // => "0.1326"
// 自定义最大最小值
Mockjs.Random.sn(2, 0, 5); // => "1.83"
英文国家名称
Mockjs.Random.country(); // => Turkey
中文国家名称
Mockjs.Random.ccountry(); // => 土耳其
国家三字码
Mockjs.Random.countryCode(); // => TUR
国家二字码
Mockjs.Random.countryCode(2); // => TR
货币编码
Mockjs.Random.currency(); // => NZD
货币名称
Mockjs.Random.currencyName(); // => 柬埔寨瑞尔
货币符号
Mockjs.Random.currencySymbol(); // => ៛
⚠️ 非真实信息,仅供测试使用,请勿用于非法用途。
统一社会信用代码
Mockjs.Random.uid(); // => 35210703CDMKJ424LA
⚠️ 非真实信息,仅供测试使用,请勿用于非法用途。
英文公司名称
Mockjs.Random.company(); // => Bxdmj Peurpx Aumozuufp Jpgmyky Gavxpt Wfds Co.,Ltd.
⚠️ 非真实信息,仅供测试使用,请勿用于非法用途。
中文公司名称
Mockjs.Random.ccompany(); // => 云南省世把书质派保有限公司
⚠️ 非真实信息,仅供测试使用,请勿用于非法用途。
ICP备案号
Mockjs.Random.icp(); // => 陕ICP备69861741号
// before
Mockjs.mock({
'list|1-10': [
{
'id|+1': 1,
name: '@cname',
idNumber: '@id' // 值跟 `id` 一样
}
]
});
// after
// 使用 `Mockjs.Random.id()` 来生成身份证号
Mockjs.mock({
'list|1-10': [
{
'id|+1': 1,
name: '@cname',
idNumber: Mockjs.Random.id()
}
]
});