美文网首页
anyproxy(接口mock功能)

anyproxy(接口mock功能)

作者: kelven_song | 来源:发表于2020-07-09 10:40 被阅读0次

    前言

    接口测试中,经常会拦截请求并修改服务端响应,实现接口mock功能。
    如果要实现对接的第三方接口,但是并没有提供测试环境,或者服务器端未开发完成时,这时可以自行搭建mock服务器,移步:moco服务器使用

    rule模块规则配置

    anyproxy 官方文档https://github.com/alibaba/anyproxy/blob/master/docs/cn/src_doc.md
    github源码地址下有一些例子可参考使用:rule_simple

    1. anyproxy实现mock功能:
      --- 中间人攻击(man-in-the-middle attack)
    • 拦截并修改正在发送的请求
      请求头(header),请求体(body),请求参数(param)等
    • 拦截并修改服务端响应
      状态码(status code)、响应头(response header)、响应内容等

    rule规则文件test.js

    module.exports = {
    // 模块介绍
    summary: 'customized rule',
    // 发送请求前拦截处理
    *beforeSendRequest(requestDetail) {
          const localResponse = {
          statusCode: 200,
          header: { 'Content-Type': 'application/json' },
          body: '{"hello": "this is local response"}'
        };
          return {
            response: localResponse
          };
     },
    // 发送响应前处理
    *beforeSendResponse(requestDetail, responseDetail) {
        //console.log(responseDetail.response);
        if (requestDetail.url === '/device/queryFirmware') {
          const newResponse = responseDetail.response;
          newResponse.body = '{"apiCode":"112FD559"}'; // body ,statusCode ,Header
            // newResponse.header['X-Proxy-By'] = 'AnyProxy';
          return new Promise((resolve, reject) => {
            setTimeout(() => { // delay the response for 5s
              resolve({ response: newResponse });   
            }, 5000);
          });
        }
        
    },
    // https请求
    *beforeDealHttpsRequest(requestDetail) {
        /* ... */ 
        },
    // 请求出错
    *onError(requestDetail, error) { /* ... */ },
    // https连接服务器出错
    *onConnectError(requestDetail, error) { /* ... */ }
    };
    

    启动anyproxy时使用rule规则文件

    anyproxy -i --rule ./test.js
    每次修改规则文件后都需要重新启动

    相关文章

      网友评论

          本文标题:anyproxy(接口mock功能)

          本文链接:https://www.haomeiwen.com/subject/chrjcktx.html