部署自己的MOCK(二)

简介: 本文适合团队内部没有MOCK服务,对mock有实际需要的小伙伴。

四、easy-mock语法


   我们除了一些简单的api接口数据获取,我们还可以输出一些定制化的数据。我们得熟悉它的使用,以及它的语法。


语法规范

Mock.js 的语法规范包括两部分:
1、数据模板定义规范(Data Template Definition,DTD)
2、数据占位符定义规范(Data Placeholder Definition,DPD)


数据模板定义规范 DTD

数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:


// 属性名   name
// 生成规则 rule
// 属性值   value
'name|rule': value


注意:属性名 和 生成规则 之间用竖线 | 分隔。生成规则 是可选的。生成规则 有 7 种格式:

'name|min-max': value
'name|count': value
'name|min-max.dmin-dmax': value
'name|min-max.dcount': value
'name|count.dmin-dmax': value
'name|count.dcount': value
'name|+step': value


生成规则 的 含义 需要依赖 属性值的类型 才能确定。

属性值 中可以含有 @占位符。

属性值 还指定了最终值的初始值和类型。

生成规则和示例:


1. 属性值是字符串 String

'name|min-max': string


通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max


'name|count': string


通过重复 string 生成一个字符串,重复次数等于 count


2. 属性值是数字 Number

'name|+1': number


属性值自动加 1,初始值为 number


'name|min-max': number


生成一个大于等于 min、小于等于 max 的整数,属性值 number 只是用来确定类型。


'name|min-max.dmin-dmax': number


生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分保留 dmindmax 位。


Mock.mock({
    'number1|1-100.1-10': 1,
    'number2|123.1-10': 1,
    'number3|123.3': 1,
    'number4|123.10': 1.123
})
// =>
{
    "number1": 12.92,
    "number2": 123.51,
    "number3": 123.777,
    "number4": 123.1231091814
}


3. 属性值是布尔型 Boolean

'name|1': boolean


随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率同样是 1/2。


'name|min-max': value


随机生成一个布尔值,值为 value 的概率是 min / (min + max),值为 !value 的概率是 max / (min + max)


4. 属性值是对象 Object

'name|count': object


从属性值 object 中随机选取 count 个属性。


'name|min-max': object


从属性值 object 中随机选取 minmax 个属性。


5. 属性值是数组 Array

'name|1': array


从属性值 array 中随机选取 1 个元素,作为最终值。


'name|+1': array


从属性值 array 中顺序选取 1 个元素,作为最终值。


'name|min-max': array


通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max


'name|count': array


通过重复属性值 array 生成一个新数组,重复次数为 count


6. 属性值是函数 Function

'name': function


执行函数 function,取其返回值作为最终的属性值,函数的上下文为属性 'name' 所在的对象。


7. 属性值是正则表达式 RegExp

'name': regexp


根据正则表达式 regexp 反向生成可以匹配它的字符串。用于生成自定义格式的字符串。


Mock.mock({
    'regexp1': /[a-z][A-Z][0-9]/,
    'regexp2': /\w\W\s\S\d\D/,
    'regexp3': /\d{5,10}/
})
// =>
{
    "regexp1": "pJ7",
    "regexp2": "F)\fp1G",
    "regexp3": "561659409"
}


数据占位符定义规范 DPD

占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。


占位符 的格式为:


@占位符 @占位符(参数 [, 参数]) 注意:


用 @ 来标识其后的字符串是 占位符。占位符 引用的是 Mock.Random 中的方法。通过 Mock.Random.extend() 来扩展自定义占位符。占位符 也可以引用 数据模板 中的属性。占位符 会优先引用 数据模板 中的属性。占位符 支持 相对路径 和 绝对路径。


Mock.mock({
    name: {
        first: '@FIRST',
        middle: '@FIRST',
        last: '@LAST',
        full: '@first @middle @last'
    }
})
// =>
{
    "name": {
        "first": "Charles",
        "middle": "Brenda",
        "last": "Lopez",
        "full": "Charles Brenda Lopez"
    }
}


一些规则 【少量数据不能够兼容】

{
"cname": "@cname",//中文人名
"id": "@id",//生成20 位数字
"title": "@ctitle",//中文title
"city": "@city",//中文城市
"ip": "@ip",//ip 地址
"email": "@email",//email
"url": "@url",//url
"cfirst": "@cfirst",//姓名,姓
"clast": "@clast",//姓名,名
"cword": "@cword('123456')",//123456 从中选取一个字符
"csentence": "@csentence(1,5)",//文字文段
"csentence5": "@csentence(5)",//文字文段
"cparagraph": "@cparagraph(1,3)",//文字文段
"string": "@string(11)",//输出11 个字符长度的字符串
"float": "@float(0,10)",//0 到 10 的浮点数
"int": "@integer(60,70)",//60 到 70 之间的整数
"boolean": "@boolean",//boolean 类型 true,false
"array|1-3": [{
"id": "@integer(1,10)",//整数 1到10 取整数
"name": "cname"
}],//数组(随机 1 到3个)
"array_sort_add|+1": ["1", "2", "3"],//数组1,2,3轮询输出
"boolean|1-2": true,//boolean 类型 true,false
"actionType|1": ['click_url', 'open_resource_detail', 'open_resource_search'],
"payload": function() {
      var returnClickUrl = {
        "linkUrl": "http://tob.zhisland.com/apph5"
      };
      var returnResourceDetail = {
        "resourceId": "606"
      };
      var returnResourceSearch = {
        "keyWords": "",
        "tagCategory": "1",
        "tag": "1"
      };
      var s = this.actionType == 'click_url' ? returnClickUrl : this.actionType == 'open_resource_detail' ? returnResourceDetail : returnResourceSearch;
      return s;
 }//function 返回设置返回的数据
}


五、总结


   这里我们列举了业界一些Mock应用,我们可以根据需要选择一款应用进行使用。广东靓仔推荐easy-mock,用了好久,感觉不错。

相关文章
|
3月前
|
人工智能 测试技术 API
Eolink创建临时服务mock接口数据——无限制那种非常带劲
Eolink创建临时服务mock接口数据——无限制那种非常带劲
25 1
|
7月前
|
前端开发
什么是 Mock 测试?掌握 Mock 测试的核心原理
Mock 的意思就是,当你很难拿到源数据时,你可以使用某些手段,去获取到跟源数据相似的假数据,拿着这些假数据,前端可以先行开发,而不需要等待后端给了数据后再开发。
|
7月前
|
XML 前端开发 测试技术
【前端小技巧】如何使用 Eolink Apilkit 调用 Mock ?
在开发过程中,进度比较赶的情况下,前端人员当页面写完时,后台的接口还没写完,等要交付的时候后端才把接口给你,这个时候就很尴尬。 这个时候 Mock 就可以很好的解决这个问题,前端团队可以在 API 还没开发完成的情况下,借助 Mock API 实现预对接,加速开发进程。测试团队可以通过 Mock API 解决不必要的系统,完成集成测试。 Eolink Apikit 为前端工程师提供 API 文档管理,快速接口测试,以及 Mock API 创建与调用,及查看文档变更历史的能力。有助于前端工程师快速查看 API 文档详情与历史记录,快速生成和使用 Mock API 提前进行页面效果验证。
33 0
|
5月前
|
JavaScript 数据安全/隐私保护
|
6月前
|
前端开发
使用concurrently模块-同时启动react项目和mock模拟接口
使用concurrently模块-同时启动react项目和mock模拟接口
42 0
|
前端开发 JavaScript 测试技术
【Eolink Apikit】Mock 解决方案
在开发过程中,由于后端与前端并行开发,或者前端需要等待后台开发,难以保证对接效率,同时即使用开发好的 API 对接,也有可能一个 API 不通就阻塞了整个软件的对接工作。同时对软件的敏感度也很高,一不小心就可能导致整个软件不能正常工作。并且界面之间存在着严重的相互依赖关系,产生的业务逻辑非常复杂,这些都会对软件的开发效率产生很大的影响。 所以学习如何利用最好的 Mock 数据是很关键的。这样做会降低前端开发者的工作量,降低开发费用,提高开发效率。 以下是一些常见的 Mock 方法,我们可以根据具体的场景和条件来进行选择和配置。最关键的是要知道如何去做,并从中挑选出最适合自己的方式。
240 0
【Eolink Apikit】Mock 解决方案
|
数据可视化 前端开发 Java
Mock工具介绍,为什么使用Mock?
Mock工具介绍,为什么使用Mock?
460 0
|
NoSQL JavaScript 前端开发
部署自己的MOCK(一)
本文适合团队内部没有MOCK服务,对mock有实际需要的小伙伴。
部署自己的MOCK(一)
|
前端开发 JavaScript 数据可视化
如何通过mock数据提高前端开发效率?
我们在做项目开发的过程中,因为是同步开发,所以前端会有等后端接口的情况。为了前后端并行开发,我们一般会要求后端开发人员先定义好接口文档。这样前端通过模拟数据,就能顺畅地进行前端业务逻辑的开发了。
109 0
如何通过mock数据提高前端开发效率?
|
开发框架 JSON 前端开发
接口自动化测试之Mock
  在某些时候,后端在开发接口的时候,处理逻辑非常复杂,在测试的时候,后端在未完成接口的情况下该如何去测试呢?   我们需要测试,但是有些请求又需要修改一下参数,或者改变一下request实现的方式,比如修改状态码,产生的图片要进行替换,或者是替换执行文件等
446 0