众多mock工具,这一次我选对了

news2025/1/22 9:15:29

文章目录

  • 写在前面
  • Mock介绍
    • Mock能解决什么问题?
    • 传统Mock解决方案
    • Postman接口测试工具
    • Mock js第三方库
  • Eolink解决方案
    • 全局Mock
    • 高级Mock
    • 返回结果Mock
    • 智能内置Mock
    • 智能自定义Mock
    • 约束条件Mock
    • Eolink的Mock解决方案的优势:
  • 写在最后

写在前面

交战之前,战士必先利其兵器,作为开发人员的我们更是如此,在日常的开发中如果拥有一款得心应手的工具软件,一定能够大大提高我们的工作效率。

在开发过程中,由于后端与前端并行开发,但是作为前端开发工程师的我们,难道在搭建完页面后只能等待后端的接口么?这样的话我们则完全被后端开发限制住了。在前面跟大家介绍过 Mock.js 不知道大家有么有看到哈,如果没有看到的同学,或者不知道mock是什么的小伙伴可以先去看看,其实mock的出现就是前后端分离后为前端不受制于后端同学的束缚而出现的,在实际开发中后端同学有自己的开发节奏,不能如我们前端所想几分钟出一个接口,可能我们索要接口的时候后端同学还在构思如何建表?使用开发好的 API 对接,也有可能一个 API 不通就阻塞了整个软件的对接工作。同时对软件的敏感度也很高,一不小心就可能导致整个软件不能正常工作。并且界面之间存在着严重的相互依赖关系,产生的业务逻辑非常复杂,这些都会对软件的开发效率产生很大的影响。

所以学习如何利用最好的 Mock数据是很关键的。这样做会降低前端开发者的工作量,降低开发费用,提高开发效率。下面我们就来看一下常见的Mock方法,我们可以根据具体的场景和条件来进行选择和配置。最关键的是要知道如何去做,并从中挑选出最适合自己的方式。

Mock介绍

或许还有一些没见过 Mock的读者,不知道 Mock是什么。今天就来跟你说说这玩意的厉害,这玩意非同凡响!
简单地说, Mock是指在测试期间,为一些难以构建或不易获得的对象,创建一个虚拟物体进行测试。而这个虚拟物体就是模拟物体,模拟对象是在调试过程中实际对象的替代。
有时候, Mock服务被称为一个测试服务替代品,或一个测试服务,下面的图片非常生动地说明了它的功能。

在这里插入图片描述

Mock能解决什么问题?

Mock功能的优势:

前端对接不依赖后端: 让前端工程师独立于后端进行开发。
增加测试的真实性: 通过随机数据,模拟各种场景。
开发无侵入:不需要修改既有代码,就可以拦截Ajax请求,返回模拟的响应数据。
数据类型丰富:支持生成随机的文本、数字、布尔值、日期、邮箱、链接、图片、颜色等。
方便扩展: 支持扩展更多数据类型,支持自定义函数和正则。

Mock功能适用场景在实际工作中非常多,真正在实际项目中,引入Mock工具通常来解决如下几类问题。主要有:

• 开发进行单元测试
因为单元测试只对目前的单元进行,所以必须保证所有的内外依赖关系都是稳定的,使用 mock的方式来模拟基础单元依赖的其它单元,这样就可以把测试的重心放在当前单元的功能上,从而消除外部因素的影响,提高测试的准确性。

• 调用第三方接口
在做接口自动化的时候,有时候需要调用第三方的接口,但是别人公司的接口服务稳定性不受你的控制,有可能别人提供的测试环境今天服务给你开着,别人就关掉了,给自动化接口测试带来很多的麻烦,此时就可以通过mock来模拟接口的返回数据,比如模拟各种第三方异常时的返回。

• 解决接口间的相互依赖
例如,您正在开发前端网页,现在您需要开发付款功能:下一次订购、付款页面界面、付款结果、付款成功、显示付款成功页、付款失败页。为了实现这个特性,您必须调用后台界面,并显示出相应的页面。现在的后端界面还没有完全开发出来,如果是前端开发,那就只能加班了。要实现开发工作的同步,在这个时候,您可以按照接口文件的要求,将接口的地址和参数发送给用户,再通过 mock接口的不同的返回接口,来完成开发工作。

传统Mock解决方案

传统Mock解决方案常见的有两种,一种是使用Postman接口测试工具进行Mock数据,另外一种是使用Mock js第三方库进行Mock数据。

Postman接口测试工具

Postman中需要点击Create Mock Server配置mock服务。选择之后,应用程序会进行一步一步的提示。

在这里插入图片描述

配置需要mock的接口地址,手动输入响应数据返回值即可。

在这里插入图片描述

Mock js第三方库

Mock.js 是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试。提供了以下模拟功能:

根据数据模板生成模拟数据
模拟 Ajax 请求,生成并返回模拟数据
基于 HTML 模板生成模拟数据

在Mac上打开命令行终端,输入安装命令: npm install mockjs,稍等几分钟安装完成。
简单示例展示:
Mock list是自增数据

// 使用 Mock
var Mock = require('mockjs')
var data = Mock.mock({
    // 属性 list 的值是一个数组,其中含有 1 到 10 个元素
    'list|1-10': [{
        // 属性 id 是一个自增数,起始值为 1,每次增 1
        'id|+1': 1
    }]
})
// 输出结果
console.log(JSON.stringify(data, null, 4))

Mock 按规则生成字符串

// 指定范围的数量
Mock.mock({ "string|1-10": "★" }) // 执行后
{ "string": "★★" } // 随机生成数量为1-10个'*'字符串
// 固定数量
Mock.mock({ "string|3": "*" })  // 执行后
{ "string": "***" } // 生成指定数量的'*'(示例是3个)字符串

Postman和Mock js使用小结

Postman: Postman的安装更容易,但Postman在mock功能中的表现,必须手工填写mock数据,而且只有一个配置可以写入。在实际应用中,仍然不够灵活,扩展性不强。

Mock js:Mock js虽然能mock出很多类型的数据,但是它需要嵌入在前端vue项目中结合使用,上手使用有一定的门槛。

总的来看,传统Mock解决方案存在几类问题:

适配复杂场景的Mock能力弱; • 复杂依赖环境不稳定; • 会增加代码量,在写mock对象代码时,有可能引入错误;
学习成本较高,需要编写代码;

综上问题,我们需要一套开箱即用的Mock工具,能应对复杂的业务场景、稳定并且可靠、对代码无侵入、上手使用简单。

在这里插入图片描述

Eolink解决方案

在介绍Eolink解决方案之前,介绍下Eolink到底是个啥? 能解决什么问题?让我们先来了解一下。

官方的解释 : Eolink 能够提供 API 全生命周期管理解决方案,帮助前端、后端以及测试人员的工作变得更敏捷,包含功能:接口文档管理、接口自动化测试、接口数据Mock等功能。

这意味着 Eolink将会为我们带来一种全新的技术解决方案, 接下来给大家介绍强大的mock功能使用。

Eolink的 mock功能非常完善,从一个整体 Mock到一个字段级的 Mock都可以适应不同的情况。我肯定相信大部分人会将其用于每天的应用,例如前后端项目开发,第三方接口的调试,以及接口的自动化测试,几个小时就能熟练地运用。我将其功能拆解成思维导图的方式讲解,这样会更清晰易懂。

在这里插入图片描述

从以上的思维导图可以分为六个层次的 Mock功能,下面我将通过每个 Mock的业务上的实例来说明功能的特点,具体的 Mock的用法,还有一些具体的调试和优化。

全局Mock

特点: 提供系统兜底的Mock规则,确保每个Mock调用的返回参数均有随机数据。

全局Mock是Eolink提供的最兜底或者最保守的一种Mock功能,主要是为了方便那些不想要附加 Mock的同学,提供一些简单的Mock功能。

首先,需要编辑页面的返回结果设置city字段。

在这里插入图片描述

然后在文档底部Mock模块选择系统默认期望链接并且点击复制到浏览器中。

在这里插入图片描述

每次刷新浏览器,都会name字段都会返回随机字符串,达到了每个Mock调用的返回参数均有随机数据的效果。

在这里插入图片描述

高级Mock

特点:配置不同的请求参数,以获得不同的返回数据。灵活全面的自定义配置,一个接口实现多种返回数据。

比如请求参数的类型name字段参数值是1、2、3,但是需要返回的结果返回不同的响应结果。在实际项目中,为了降低前端配置Mock接口,可以通过一个接口实现配置不同的请求参数,获取不同的返回数据。

可是使用动态Javascript通过代码生成返回数据时,JavaScript是一种支持面向对象编程、命令式编程和函数式编程的网页开发客户端脚本语言,可以使用编写 Javascript 代码的方式,并使用 return 语句返回数据,而且这种方式最容易处理数据,本文中使用的就是这种方式。Javascript模式中也支持 Mock JS,通过 Mock.mock() 方式调用,详情可以查阅 Mock JS 官方文档。

在这里插入图片描述

通过编写Javascript脚本设置响应内容,还可以直接使用内置函数设置“请求体触发条件”相关内容,
设置的信息等同于在“请求体触发条件”输入框中的设置,如设置Header参数或者请求体参数等,
设置完成后,在测试时填写对应的参数进行触发。

示例:设置请求体参数,对触发条件进行判断输出符合条件的数值判断触发条件“a”是否等于“eo_test”若等于则输出“成功”,否则输出“失败”。

在这里插入图片描述

在请求参数中输入status=1后,可以看出结果是code=1,这样就是根据输入条件动态mock返回数据的效果。当然,在“数据输出”中,我们可以添加代码,对数据的合理性进行检查,以确保数据的合理可信。

在这里插入图片描述

返回结果Mock

特点:编辑接口文档的返回结果的同时完成Mock规则配置。边写文档边完成Mock配置,无需额外工作量。

在Mock规则区域,可直接在Mock规则输入框中填写固定值,Mock API调用时直接返回其固定值。

在这里插入图片描述

智能内置Mock

特点:智能识别常用返回参数,自动填入预置Mock规则。零配置,无形中完成Mock规则填写。

系统已内置一套常用的智能Mock规则,你无需做任何配置,在文档中编写对应的字段名则会出现对应的Mock规则。实现Mock API零配置,无形中完成Mock规则填写。

比如: 字段名输入time,Mock规则会自动识别匹配出内置Mock规则,@datetime(‘yyyy-MM-dd HH:mm:ss’)这种Mock规则,用户在使用过程中,使用效果无感知、不需要额外配置。

在这里插入图片描述

智能自定义Mock

特点:智能识别特殊返回参数,自动化填充自定义Mock规则。一次配置多次复用,提升Mock规则边写效率。

你可以通过智能自定义Mock配置,使得你在文档中编写某个字段名后,系统自动填入对应的Mock规则。实现字段Mock规则一次配置,永久复用。大大提高了工作效率,让您在工作中游刃有余。

把Mock规则和字段名的匹配规则预先自定义好,然后后续可以在实际使用的时候,填写对应的字段名可以输出对应的Mock规则。
比如
@ctitle: 随机生成一句中文标题。
@cword: 随机中文词组。
@datetime: 日期时间。

在这里插入图片描述

约束条件Mock

特点:根据字段约束条件自动生成对应的Mock数据。字段级多条件配置,还原最真实的随机数据。

对返回参数字段进行约束条件设置后,Mock规则输入框会自动填入占位符@eo.limit 并自动根据约束条件返回Mock数据。

在这里插入图片描述

在操作区域内点击更多设置,如字段长度,最大值最小值,和值可能性等。

在这里插入图片描述

Eolink的Mock解决方案的优势:

能适配各种场景的Mock能力强;
学习成本低,不需要额外编写代码;
mock能力更加智能,实现零配置;
mock服务和应用服务彼此分离,不会存在代码污染;

写在最后

Eolink在Mock方面表现的很强大,适用于不同的业务场景、适用于不同的使用人群,通过以上两种简单和高级的调用,不同之处是简单的 Mock配置简单,而高级 Mock是基于简单 Mock的增强,可以适应更加复杂的情况,结合多种智能配置方式搭建的Mock API 能力体系,满足了大部分用户对Mock能力的需求。

看到这里是不是感觉到我们前端再也不用卑微的去恳求接口了,是不是我们在某种程度上拜托了后端的限制了呢,自己模拟数据进行后续前端的工作。赶快来尝试我们这款强大的 Eolink 吧!体验链接:https://www.eolink.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/408451.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【node拓展】web开发模式 | express应用程序生成器

✅ 作者简介:一名普通本科大三的学生,致力于提高前端开发能力 ✨ 个人主页:前端小白在前进的主页 🔥 系列专栏 : node.js学习专栏 ⭐️ 个人社区 : 个人交流社区 🍀 学习格言: ☀️ 打不倒你的会使你更强&a…

JavaScript 30 JavaScript 日期格式

JavaScript 文章目录JavaScript30 JavaScript 日期格式30.1 JavaScript 日期输出30.2 JavaScript ISO 日期30.3 ISO 日期(年和月)30.4 ISO 日期(只有年)30.5 ISO 日期(完整的日期加时、分和秒)30.6 时区30.…

关于hash和history的区别和使用

一、区别 1、 history和hash都是利用浏览器的两种特性实现前端路由,history是利用浏览历史记录栈的API实现,hash是监听location对象hash值变化事件来实现 2、 history的url没有’#号,hash反之 3、 相同的url,history会触发添加…

最好用的 6 款 Vue 拖拽组件库推荐 - 卡拉云

本文首发:《最好用的 6 款 Vue 拖拽组件库推荐 - 卡拉云》 Vue 拖拽组件库(drag-and-drop)组件在使用 Vue 框架开发中非常常见的需求,做个内容行排序,拖拽小组件到网页上这类都需要用到拖拽组件。本文记录了我自己用过…

vue中使用echarts实现中国地图

第一种效果:不同省份颜色不同 代码: 注意: ①要实现这种效果,地图数据的name一定要是省份的名字,要不然颜色出不来; ②一定要有visualMap配置,并且它的seriesIndex属性 对应的是series的数组下标…

Vue项目打包部署

前几天看[小猪课堂发布的nginx部署](https://zhuanlan.zhihu.com/p/431796992),跟着做了一遍,由于本人是第一次尝试,遇见了很多问题。经过查阅和搜索,终于解决掉了。下面给大家介绍一下我的流程和遇见的问题,我们可以多…

Vue3:探讨一下mixin

一、Vue2中的mixin 1、定义要混入的数据对象 // 定义一个 mixin 对象 export const myMixin {created() {this.hello()},methods: {hello() {console.log(hello from mixin!)}} } 2、在需要这些东西的地方去通过mixins获得mixin对象 <template><div><h1>…

浅识WebGL和Three.js

WebGL 想必各位看官大大都了解过&#xff0c;进行3D图形渲染&#xff0c;主要依赖显卡&#xff08;GPU&#xff09;为我们提供强大的运算支持。GPU也像不同CPU架构具备不同的指令集一样&#xff0c;不同的显卡厂商也为不同的GPU型号提供了不同的底层指令逻辑&#xff0c;所支持…

Axios发送请求

--- axios是什么: Axios&#xff0c;是一个基于promise的网络请求库&#xff0c;作用于node.js和浏览器中。 一、axios的特点&#xff1a; 1.在浏览器中发送XMLHttpRequest请求。 2.在node.js中可以发送请求 3.支持PromiseAPI 4.拦截请求和响应数据 二、axios的请求方式…

thinkphp5.0.24反序列化漏洞分析

thinkphp5.0.24反序列化漏洞分析 文章目录thinkphp5.0.24反序列化漏洞分析具体分析反序列化起点toArraygetRelationData分析$modelRelation生成进入__call前的两个if__call虚假的写文件setTagItem绕过exitexppop链图解决windows下的文件名问题参考链接thinkphp5框架&#xff1a…

webstorm使用指南

前言 前端开发比较推荐的两款编辑器JetBrains的WebStorm和微软的VsCode&#xff0c;本人之前开发一直用的VsCode&#xff0c;日常开发其实基本上就满足了&#xff0c;但有几个地方对于我来说一直都是痛点&#xff0c;体验感非常不好。 首先是Git分支管理和提交&#xff0c;虽然…

漂亮的弹出框,javascript库bootbox介绍

传统的javascript的警告框、确认框、提示框&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>弹出框</title> </head> <body> <button onclick"f1()">…

Javaweb实验:静态网页制作

Javaweb实验&#xff1a; 1.静态网页制作 目录 Javaweb实验&#xff1a; 前言 一、实验目的 二、实验原理 三、实验内容 四、实验步骤 五、实验结果 六、实验内容 七、实验步骤 八、实验结果 九、思考 1、frameset和frame标签的作用是什么&#xff1f; 2、个人主…

不用AI也能实现的文字自动播报

背景如果注意观察的话&#xff0c;在现实生活中&#xff0c;你一定会遇到下列几个场景&#xff0c;一起来看看有没有熟悉的感觉。场景一、某周某&#xff0c;小明和朋友一起去某美食街进行聚餐&#xff0c;到了美食街找到一家推荐度非常高的美食店。由于推荐度非常高&#xff0…

【JavaScript 进阶教程】对象新增方法 defineProperty 与 keys 的说明与使用

文章导读&#xff1a; 这篇文章给大家讲解在 ES5 中对象新增的两个常用方法&#xff1a;defineProperty()&#xff0c;keys()&#xff0c; 这两个方法可以让我们更方便的操作对象&#xff0c;获取对象属性&#xff0c;赋值修改等等操作&#xff0c;最重要的是&#xff0c;这些方…

JS的同步与异步

js的同步与异步 ​ 众所周知&#xff0c;js是一个单线程的语言&#xff0c;学过java、c之类的都知道&#xff0c;其他语言有个叫类继承的东西&#xff0c;就相当于开辟另个一个流水线&#xff0c;是多线程 ​ 而javascript就像一条流水线&#xff0c;它无法开辟别的流水线&am…

猿创征文|【React 三】组件实例的三大属性(state、props、refs)

目录 一、 State 1.概念 2.State的简单用法3. JS绑定事件 4.react 绑定事件 5.react this指向问题 6.修改state值 7.代码简写 二、props 1.概念 2.传参的基础方法、运算符传参 三、refs 定义 字符串形式的ref、回调函数下ref、createRef 创建ref容器 一、 State 1…

【微信小程序】-- 分包(四十四)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…

Vue3 + PDF.js 实现 PDF 预览

文章目录1 前言2 PDF 预览测试2.1 下载 PDF.js2.2 window.open 直接打开2.3 弹框形式打开3 修改配置项3.1 修改主题色为暗色系3.2 修改默认语言为简体中文3.3 打开 PDF 后默认跳转到某一页4 移除部分按钮4.1 简单按钮移除4.2 复杂按钮移除5 错误处理5.1 跨域报错5.2 默认语言为…

架构图以及vue的简介

架构图 前后端分离总架构图 ​ 前端架构设计图 ​ MVVM 架构模式 MVVM 的简介 MVVM 由 Model,View,ViewModel 三部分构成&#xff0c;Model 层代表数据模型&#xff0c;也可以在Model中定义数据修改和操作的业务逻辑&#xff1b;View 代表UI 组件&#xff0c;它负责将数据模…