2017-10-25 17:20:55 +08:00
|
|
|
|
## Mock 期望
|
|
|
|
|
在测试时,很多时候需要根据不同的请求参数、IP 返回不同的 HTTP Code、HTTP 头和 JSON 数据。
|
|
|
|
|
|
|
|
|
|
Mock 期望就是根据设置的请求过滤规则,返回期望数据。
|
|
|
|
|
|
|
|
|
|
### 使用方法
|
|
|
|
|
1. 进入接口详情页,点击『高级 Mock』选项。
|
|
|
|
|
<div class="doc-img-wrapper"><img class="doc-img-r" src="./images/usage/adv-mock-case1.png"/></div>
|
|
|
|
|
2. 点击『添加期望』,填写过滤规则以及期望返回数据,点击『确定』保存。
|
|
|
|
|
<div class="doc-img-wrapper"><img class="doc-img-r" src="./images/usage/adv-mock-case3.png"/></div>
|
|
|
|
|
<div class="doc-img-wrapper"><img class="doc-img-r" src="./images/usage/adv-mock-case4.png"/></div>
|
|
|
|
|
3. 然后尝试在浏览器里发送符合规则的请求,查看返回的数据是否符合期望。
|
|
|
|
|
<div class="doc-img-wrapper"><img class="doc-img-r" src="./images/usage/adv-mock-case5.png"/></div>
|
|
|
|
|
|
|
|
|
|
### 期望填写
|
|
|
|
|
|
2017-10-27 15:45:14 +08:00
|
|
|
|
基本信息
|
2017-10-25 17:20:55 +08:00
|
|
|
|
|
2017-10-27 15:45:14 +08:00
|
|
|
|
* 期望名称:给此条期望命名
|
2017-10-25 17:20:55 +08:00
|
|
|
|
* IP 过滤:请求的 IP 是设置的地址才可能返回期望。默认 IP 过滤关闭,任何 IP 地址都可能返回期望。
|
|
|
|
|
* 参数过滤:请求必须包含设置的参数,并且值相等才可能返回期望。参数可以在 Body 或 Query 中。
|
|
|
|
|
|
|
|
|
|
响应
|
|
|
|
|
|
|
|
|
|
* HTTP Code:期望响应的 HTTP 状态码
|
|
|
|
|
* 延时:期望响应的延迟时间
|
|
|
|
|
* HTTP 头:期望响应带有的 HTTP 头
|
|
|
|
|
* 返回 JSON:期望返回的 JSON 数据
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 自定义 Mock 脚本
|
|
|
|
|
在前端开发阶段,对于某些接口,业务相对复杂,而 UI 端也需要根据接口返回的不同内容去做相应的处理。
|
|
|
|
|
|
|
|
|
|
YApi 提供了写 JS 脚本方式处理这一问题,可以根据用户请求的参数修改返回内容。
|
|
|
|
|
|
|
|
|
|
### 全局变量
|
|
|
|
|
请求
|
|
|
|
|
|
|
|
|
|
- `header` 请求的 HTTP 头
|
|
|
|
|
- `params` 请求参数,包括 Body、Query 中所有参数
|
|
|
|
|
- `cookie` 请求带的 Cookies
|
|
|
|
|
|
|
|
|
|
响应
|
|
|
|
|
|
2017-10-26 15:01:51 +08:00
|
|
|
|
- `mockJson`
|
|
|
|
|
接口定义的响应数据 Mock 模板
|
2017-10-25 17:20:55 +08:00
|
|
|
|
|
2017-10-26 15:01:51 +08:00
|
|
|
|
- `resHeader`
|
|
|
|
|
响应的 HTTP 头
|
|
|
|
|
|
|
|
|
|
- `httpCode`
|
|
|
|
|
响应的 HTTP 状态码
|
|
|
|
|
|
|
|
|
|
- `delay`
|
|
|
|
|
Mock 响应延时,单位为 ms
|
|
|
|
|
|
|
|
|
|
- `Random`
|
|
|
|
|
Mock.Random 方法,详细使用方法请查看 <a href="https://github.com/nuysoft/Mock/wiki/Mock.Random">Wiki</a>
|
2017-10-25 17:20:55 +08:00
|
|
|
|
|
|
|
|
|
### 使用方法
|
|
|
|
|
1. 首先开启此功能
|
2017-10-26 15:01:51 +08:00
|
|
|
|
2. Mock 脚本就是用 JavaScript 对 `mockJson` 变量修改,请避免被全局变量(httpCode, resHeader, delay)的修改
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 示例1, 根据请求参数重写 mockJson
|
|
|
|
|
```
|
|
|
|
|
if(params.type == 1){
|
|
|
|
|
mockJson.errcode = 400;
|
|
|
|
|
mockJson.errmsg = 'error;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(header.token == 't'){
|
|
|
|
|
mockJson.errcode = 300;
|
|
|
|
|
mockJson.errmsg = 'error;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(cookie.type == 'a'){
|
|
|
|
|
mockJson.errcode = 500;
|
|
|
|
|
mockJson.errmsg = 'error;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 示例2, 生成高度自定义数据内容
|
|
|
|
|
```
|
|
|
|
|
var a = [1,1,1,1,1,1,1,1,1,1]
|
2017-10-25 17:20:55 +08:00
|
|
|
|
|
2017-10-26 15:01:51 +08:00
|
|
|
|
mockJson = {
|
|
|
|
|
errcode: 0,
|
|
|
|
|
email: Random.email('qq.com'),
|
|
|
|
|
data: a.map(function(item){
|
|
|
|
|
return Random.city() + '银行'
|
|
|
|
|
})
|
|
|
|
|
}
|
2017-10-25 17:20:55 +08:00
|
|
|
|
|
2017-10-26 15:01:51 +08:00
|
|
|
|
```
|
2017-10-25 17:20:55 +08:00
|
|
|
|
|
|
|
|
|
## Mock 优先级说明
|
|
|
|
|
请求 Mock 数据时,规则匹配优先级:Mock 期望 > 自定义 Mock 脚本 > 普通 Mock。
|
|
|
|
|
|
|
|
|
|
如果前面匹配到 Mock 数据,后面 Mock 则不返回。
|