高级Mock
高级 Mock 分为Mock 期望
和自定义 Mock 脚本
两种方式。
Mock 期望
在测试时,很多时候需要根据不同的请求参数、IP 返回不同的 HTTP Code、HTTP 头和 JSON 数据。
Mock 期望就是根据设置的请求过滤规则,返回期望数据。
使用方法
- 进入接口详情页,点击『高级 Mock』选项。
2. 点击『添加期望』,填写过滤规则以及期望返回数据,点击『确定』保存。
3. 然后尝试在浏览器里发送符合规则的请求,查看返回的数据是否符合期望。
期望填写
基本信息
- 期望名称:给此条期望命名
- IP 过滤:请求的 IP 是设置的地址才可能返回期望。默认 IP 过滤关闭,任何 IP 地址都可能返回期望。
- 参数过滤:请求必须包含设置的参数,并且值相等才可能返回期望。参数可以在 Body 或 Query 中。
响应
- HTTP Code:期望响应的 HTTP 状态码
- 延时:期望响应的延迟时间
- HTTP 头:期望响应带有的 HTTP 头
- 返回 JSON:期望返回的 JSON 数据
自定义 Mock 脚本
在前端开发阶段,对于某些接口,业务相对复杂,而 UI 端也需要根据接口返回的不同内容去做相应的处理。
YApi 提供了写 JS 脚本方式处理这一问题,可以根据用户请求的参数修改返回内容。
全局变量
请求
header
请求的 HTTP 头params
请求参数,包括 Body、Query 中所有参数cookie
请求带的 Cookies
响应
mockJson
接口定义的响应数据 Mock 模板resHeader
响应的 HTTP 头httpCode
响应的 HTTP 状态码delay
Mock 响应延时,单位为 msRandom
Mock.Random 方法,可以添加自定义占位符,详细使用方法请查看 Wiki
使用方法
- 首先开启此功能
- 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]
mockJson = {
errcode: 0,
email: Random.email('qq.com'),
data: a.map(function(item){
return Random.city() + '银行'
})
}
Mock 优先级说明
请求 Mock 数据时,规则匹配优先级:Mock 期望 > 自定义 Mock 脚本 > 项目全局 mock 脚本 > 普通 Mock。
如果前面匹配到 Mock 数据,后面 Mock 则不返回。