Mock.js 模拟数据生成工具

简介

一般项目开发中,我们前后端开发基本上是同时进行的,但往往会存在后端接口没开发完,而导致前端开发无法继续进行的情况。

为了避免这种情况,我们可以使用Mock.js,生成随机数据,拦截 Ajax 请求,来模拟服务器响应。

优点是使用简单方便,无侵入性。

Mock.js官网:
http://mockjs.com/

Mock特点

前后端分离

让前端攻城师独立于后端进行开发。

增加单元测试的真实性

通过随机数据,模拟各种场景。

开发无侵入

不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据。

用法简单

符合直觉的接口。

数据类型丰富

支持生成随机的文本、数字、布尔值、日期、邮箱、链接、图片、颜色等。

方便扩展

支持支持扩展更多数据类型,支持自定义函数和正则。

Mock.js安装

npm安装:
npm install mockjs

直接引用:
<script src="http://mockjs.com/dist/mock.js"></script>;

使用mock创建模拟数据

Mock.mock( url, type, template)

第一个参数 url 为请求路径,与所需拦截接口相同;
第二个参数 type 为请求类型 如:get、post、delete、put等;
第三个参数是生成的数据,作为响应数据返回。可以为对象,也可以为函数,函数需要return;

示例:

// 引用 Mock
const Mock = require('mockjs')
 
export const userData = Mock.mock("/data/list", "get", {
  // 属性 list 的值是一个数组,随机生成 1 到 10 个元素
  "list|1-10": [
    {
      "id|+1": 1,
    },
  ],
  code: 200,
  message: 'ok',
});

数据模板定义

数据模板格式:
'name|rule': value

String
'name|min-max': string
'name|count': string

Number
'name|+1': number
'name|min-max': number
'name|min-max.dmin-dmax': number

Boolean
'name|1': boolean
'name|count': object
'name|min-max': object

Object
'name|count': object
'name|min-max': object

Array
'name|1': array
'name|min-max': array

Function
'name': function

RegExp
'name': regexp

Path
Absolute Path
Relative Path

数据占位符定义

Mock.Random 是一个工具类,用于生成各种随机数据。

Basic
Random.boolean( min?, max?, current? )    // 返回一个随机的布尔值
Random.natural( min?, max? )    // 返回一个随机的自然数
Random.integer( min?, max? )    // 返回一个随机的整数
Random.float( min?, max?, dmin?, dmax? )    // 返回一个随机的浮点数
Random.character( pool? )    // 返回一个随机字符
Random.string( pool?, min?, max? )    // 返回一个随机字符串
Random.range(start?, stop, step?)    // 返回一个整型数组

Date
Random.date( format? )    // 返回一个随机的日期字符串
Random.time( format? )    // 返回一个随机的时间字符串
Random.datetime( format? )    // 返回一个随机的日期时间字符串
Random.now( unit?, format? )    // 返回当前时间的日期时间字符串

Image
Random.image( size?, background?, foreground?, format?, text? )    // 生成一个随机的图片地址
Random.dataImage( size?, text? )    // 生成一段随机的Base64图片编码

Color
Random.color()    // 随机生成一个16进制颜色
Random.hex()    // 随机生成一个16进制颜色
Random.rgb()    // 随机生成一个rgb格式的颜色
Random.rgba()    // 随机生成一个rgba格式的颜色
Random.hsl()    // 随机生成一个hsl格式的颜色

Text
Random.paragraph( min?, max? )    // 随机生成一段文本
Random.sentence( min?, max? )    // 随机生成一个句子
Random.word( min?, max? )    // 随机生成一个单词
Random.title( min?, max? )    // 随机生成一个标题
Random.cparagraph( min?, max? )    // 随机生成一段中文文本
Random.csentence( min?, max? )    // 随机生成一句中文文本
Random.cword( pool?, min?, max? )    // 随机生成一个汉字
Random.ctitle( min?, max? )    // 随机生成一句中文标题

Name
Random.first()    // 随机生成英文名
Random.last()    // 随机生成英文姓
Random.name( middle? )    // 随机生成一个英文姓名
Random.cfirst()    // 随机生成一个中文名
Random.clast()    // 随机生成一个中文姓
Random.cname()    // 随机生成一个中文姓名

Web
Random.url()    // 随机生成一个URL协议
Random.domain()    // 随机生成一个域名
Random.protocol()    // 随机生成一个协议
Random.tld()    // 随机生成一个顶级域名
Random.email()    // 随机生成一个邮箱
Random.ip()    // 随机生成一个IP

Address
Random.region()    // 随机生成一个(中国)大区
Random.province()    // 随机生成一个(中国)省
Random.city( prefix? )    // 随机生成一个(中国)市
Random.county( prefix? )    // 随机生成一个(中国)县
Random.zip()    // 随机生成一个邮政编码

Helper
Random.capitalize( word )    // 把字符串的首字母转换为大写
Random.upper( str )    // 把字符串转大写
Random.lower( str )    // 把字符串转小写
Random.pick( arr )    // 从数组中随机选取一个元素,并返回
Random.shuffle( arr )    // 打乱数组中元素的顺序,并返回

Miscellaneous
Random.guid()    // 随机生成一个GUID
Random.id()    // 随机生成一个18位身份证号
Random.increment( step? )    // 生成一个全局自增整数

参考示例:
http://mockjs.com/examples.html

(完)

none
最后修改于:2024年06月05日 14:54

添加新评论