这是我参与「第四届青训营 」笔记创作活动的的第4天
何为Mock?
在我看来,Mock既是在后端接口还未完成之前,通过程序模拟的方式来模拟正式后端的行为。
Mock的好处?
1. 团队可以并行工作
有了Mock,前后端同学只需要定义好接口文档就可以开始并行工作,互不影响,只在最后的联调阶段往来密切;后端与后端之间如果有接口耦合,也同样能被Mock解决;测试过程中如果遇到依赖接口没有准备好,同样可以借助Mock;不会出现一个团队等待另一个团队的情况。这样的话,开发自测阶段就可以及早开展,从而发现缺陷的时机也提前了,有利于整个产品质量以及进度的保证。
- 隔离系统
假如我们需要调用一个post请求,为了获得某个响应,来看当前系统是否能正确处理返回的“响应”,但是这个post请求会造成数据库中数据的污染,那么就可以充分利用Mock,构造一个虚拟的post请求,我们给他指定返回就好了。
- 可以用来演示
假如我们需要创建一个演示程序,并且做了简单的UI,那么在完全没有开发后端服务的情况下,也可以进行演示。说到演示了,假如你已经做好了一个系统,并且需要给客户进行演示,但是里面有些真实数据并不想让用户看到,那么同样,你可以用Mock接口把这些敏感信息接口全部替换。
怎样Mock?
首先需要事先定义好接口规范,然后交由其他工具Mock。下面以Apifox为例,了解大致过程。
神级工具ApiFox
概述
ApiFox 集 API 文档、API 调试、API Mock、API 自动化测试 功能于一体,
Apifox = Postman + Swagger + Mock + JMeter
定义接口
- 点击左侧搜索框旁边的
+号按钮即可打开新建窗口。
- 在打开的窗口中,直接定义接口相关信息。
接口路径
以斜杠/起始的接口 path 部分,如/pets、/pets/{id}。
请求参数
Params 参数
包含 Query 参数和 Path 参数两部分。
- Query 参数:即 URL 中
?后的参数。 - Path 参数:自动提取
接口路径中大括号包裹起来的参数,如/pets/{id}中的的{id}即表示名为id的 Path 参数。
Body 参数
Body 参数类型
- none:无 body 参数。
- form-data:即 Content-Type 为
multipart/form-data。 - x-www-form-urlencoded:即 Content-Type 为
application/x-www-form-urlencoded。 - json:即 Content-Type 为
application/json。 - xml:即 Content-Type 为
application/xml。 - binary:发送文件类数据时使用。
- raw:发送其他文本类数据时使用。
返回响应
返回响应定义主要包含以下几部分
- 接口返回的 HTTP 状态码
- 返回内容的数据格式:
JSON、XML、HTML、Raw、Binary - 数据结构:仅
JSON、XML可配置数据结构,关于数据结构详细说明
Mock功能
将项目设置里的云端Mock地址作为项目Api的BaseUrl即可,Mock地址在这里找:
在前端项目中的实示例配置如下: