阿萨聊测试:Apifox的高级Mock 自定义脚本

942 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情

大家好,我是阿萨。今天我们学习高级Mock的自定义脚本功能。学习完前面的内容后, 我们还有一类场景使用前面的Mock 方法无法实现. 那就是:

根据传入的参数值不同返回不同的数据列表。比如根据传入的参数确定分页指定页面数据。

今天会介绍这类场景的具体脚本实现方法。

解决以上问题之前,我们先学习下APifox 给我们提供的方法以及属性有哪些。

请求:fox.mockRequest

  • fox.mockRequest.headers 请求的 HTTP 头
  • fox.mockRequest.cookies 请求带的 Cookies
  • fox.mockRequest.getParam(key: string) 获取请求参数,包括 Path 参数、Body 参数、Query 参数。

响应:fox.mockResponse

  • fox.mockResponse.headers 响应的 HTTP 头
  • fox.mockResponse.code 系统自动生成的的 HTTP 状态码
  • fox.mockResponse.json() 系统自动生成的 JSON 格式响应数据
  • fox.mockResponse.setBody(body: any) 设置接口返回 Body,参数支持 JSON 或字符串
  • fox.mockResponse.setCode(code: number) 设置接口返回的 HTTP 状态码
  • fox.mockResponse.setDelay(duration: number) 设置 Mock 响应延时,单位为毫秒

了解了它提供的基本的 方法和属性之后,我们来看下如何解决分页指定页面场景。

  1.  先在昨天的接口基础上,增加一个param, 就是page。默认值先写上3.

图片

\

  1. 修改文档,修改接口的响应部分。

图片

\

3. 点击【高级Mock】----【脚本】

  1. 打开【是否开启】

  2. 复制右边示例里的代码,粘贴到左边。\

图片

\

示例代码:\

// 获取自动 Mock 出来的数据var responseJson = fox.mockResponse.json();// 修改 responseJson 里的分页数据// 将 page 设置为请求参数的 pageresponseJson.page = fox.mockRequest.getParam('page');// 将 total 设置 120responseJson.total = 120;// 将修改后的 json 写入 fox.mockResponsefox.mockResponse.setBody(responseJson);
  1. 【保存】 然后点【快捷请求】, 查看对应结果。

图片

结果就是我们 传入的参数 page 为3的值啦。

目标达成。

到此为止,所有Apifox 提供的Mock 方法都实现了。

你学会了吗?

如果你喜欢今天的文章,欢迎点赞,关注。