FunTester moco server框架架构图
之前画了两张框架的架构图:FunTester测试框架架构图初探
和FunTester测试项目架构图初探,反响不错,最近又对moco API
产生了兴趣复习一下,顺便做了一个总结。
其中大部分功能都是我在moco API
的基础上封装而来的,简化了使用方法,增强了功能。少量是我自己做了补充,有兴趣的可以参考之前的文章:
- 解决moco框架API在post请求json参数情况下query失效的问题
- 给moco API添加limit功能
- 给moco API添加random功能
- 解决moco框架API在cycle方法缺失的问题
- 如何mock固定QPS的接口
- mock延迟响应的接口
- moco固定QPS接口升级补偿机制
- moco框架接口命中率统计实践
FunTester moco框架架构图是对moco api
的一个总结,一共分为三类功能:RequestMatcher
、ResponseHandler
和HttpServer
。
RequestMatcher
这个对象主要是负责匹配请求的,功能作用在当请求进来以后,通过拦截匹配的请求,再进行响应。
拦截分三类:URL匹配、参数匹配和组合匹配。
URL匹配
- urlOnly:URL全量匹配
- urlStartsWith:URL前缀匹配
- urlEndWith:URL后缀匹配
- urlContain:URL包含匹配
- urlMatcher:URL正则匹配
这里有个隐藏的请求方法匹配,也就是GET
和POST
一类,除此以外还提供了put
和delete
方法。
参数匹配
参数匹配有一个正交图:一方面判断参数的来源,一方面判断参数的属性。
参数来源
- args:GET接口参数
- params:POST接口JSON参数
- form:POST接口表单参数
- header:请求头参数
- cookie:cookie参数
参数属性
- exist:参数是否存在
- eq:参数值是否与期望相等
组合匹配
这里提供了三个组合匹配的功能both、or和not。
- both:同时满足所有条件
- or:满足一种条件
- not:不满足所有条件
ResponseHandler
由RequestMatcher
对请求进行拦截,接下来就由ResponseHandler
对请求进行响应,响应划分成四种:基础响应、功能响应、设置响应和拓展响应。
基础响应
- textRes:响应内容是文本
- jsonRes:响应内容是JSON
- obRes:响应内容是对象
这三种基本响应是接下来高级响应的基础。
功能响应
- cycleRes:循环响应,将配置的多个响应内容当做一个环形链表,每一次请求都响应上一个请求响应的下一个内容。
- sequenceRes:次序响应,将配置多个响应当做一个有序数组,依次响应,最终会停在最后一个响应上,接下来所有响应都是最后一个响应,类似于库存卖票。
- random:随机响应,每次从配置的多个相应内容中随机返回一个内容响应。
设置响应
- setStatus:设置HTTPcode码
- setHeader:设置header
- setCookie:设置cookie
- setProxy:设置代理URL,会将代理URL响应内容返回给请求
拓展响应
- delay:延迟响应
- QPS:固定QPS
- limit:限制请求频率
- cycle:循环请求,改方法同功能响应但是可响应内容更多。
HttpServer
这个设置项比较少,除了设置请求方法以外,通盘有只有一类设置项MocoMonitor,包括port和log在moco API
体系里都是MocoMonitor的具体实现类。
这里有两个需要注意:
- proxy:设置代理,这个是跳转的,跟
ResponseHandler
里面的代理不一样。 - mount:设置挂载,可以参考五行代码构建静态博客中的应用。
最后一个MocoRequestHit
就是用来统计各个接口的命中次数,可以用来做接口请求次数的验证。
Runner比较特殊,用来启动服务和停止服务的,一个Runner
可以启动多个HttpServer
,中途可以灵活控制。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2020-06-03 Java应用程序是如何浪费内存的
2020-06-03 如何优化软件测试成本