Apifox的Mock功能从易到难可分为多个方面。高级Mock主要通过参数化和自定义脚本两种方式,让模拟数据从随机生成变为智能响应。
参数化期望:为同一个接口配置多条规则,每个规则包含触发条件(请求参数)和预设响应。根据不同输入返回固定但不同的响应(如ID=1返回数据A,ID=2返回数据B)。接口详情页的高级Mock→ 期望标签页。高于自定义脚本。请求会优先一致期望,如果无一致才会执行脚本。
自定义脚本 (JavaScript):编写JavaScript脚本,通过fox.mockRequest和fox.mockResponse等API动态处理请求和生成响应。需要复杂思路、计算、状态维持或调用外部库的情形(如模拟分页、登录态、业务规则检查)。接口详情页的高级Mock →脚本标签页。低于期望,但高于所有静态Mock规则(如字段级Mock、智能Mock)。
应用
参数化期望
功能:它允许您根据请求参数(如Query、Body、Header等)的不同,返回不同的预设数据。如,模拟一个查询接口:当petId=1时,返回状态为available的数据;当petId=2时,返回sold的数据。
条件设置:支持丰富的比较关系,如等于、不等于、包含、正则一致等,并可组合多个参数条件。
响应数据:支持使用Mock.js语法(如@cname生成中文名)和Nunjucks模板语法(用于循环、条件判断)来生成动态的响应内容。
自定义脚本
对象:脚本主要通过fox.mockRequest获取请求信息,通过fox.mockResponse控制返回。
API:
fox.mockRequest.getParam('key'):获取任意位置的请求参数。
fox.mockRequest.headers.get('token'):获取请求头。
fox.mockResponse.json():获取智能Mock生成的初始数据。
fox.mockResponse.setBody() / .setCode() / .setDelay():设置响应体、状态码和延迟。
技巧
掌握了基础后,可以组合运用这些技术处理更复杂的业务情形:
模拟完整业务流程(如电商订单):可以用脚本模拟“订单状态机”。如,通过脚本内存临时存储订单数据,并让查询订单的接口根据创建时间等思路自动更新状态(如超过5分钟自动取消)。支付、发货等操作,则可以通过配置不同的期望来模拟成功、失败等情形。
模拟异常延迟:
异常:在脚本中检查参数、Token等,条件不满足时用 .setCode(400/401/500) 返回错误。甚至可以设定随机错误率,模拟服务器不稳定。
延迟:使用 fox.mockResponse.setDelay(3000) 模拟网络延迟,测试前端加载状态。
生成符合业务规则的动态数据:结合Mock.js库,可以生成高度仿真的数据列表。如,模拟一个分页列表,根据请求的页码、重点词动态生成数据,并注入如@cname(中文名)、@city(城市)等真实感字段。
建议
优先级:高级Mock期望 > 自定义脚本 > 字段Mock规则 > 智能Mock。调试时如果结果不符,请按此顺序检查。
选择:规则确定、条件固定的情形用“期望”;需要思路计算、状态管理或处理复杂业务时用“脚本”。
团队协作:利用Apifox的云端Mock功能,生成一个固定URL,保证前后端、测试团队使用的模拟数据完全一致。