Mock Server利器 - Moco
转载请标明出处:http://blog.csdn.net/shensky711/article/details/52770686
本文出自: 【HansChen的博客】
- Moco介绍
- Moco独立运行所需环境
- 如何运行Moco
- 启动http服务
- 启动https服务
- Moco HTTPs API配置
- 如何在配置文件添加注释
- 约定请求Body
- 约定接口的uri
- 约定请求参数
- 约定请求方法
- 约定HTTP版本
- 约定请求头部
- 约定cookie
- 约定请求form
- 约定以指定xml作为请求body
- 用xpath对请求进行匹配
- 约定以指定json作为请求body
- 用正则表达式对请求进行匹配
- 匹配操作
- 设置Response content
- 设置Response 状态码
- 设置Response HTTP版本
- 设置Response 头部
- 设置重定向
- 设置cookie
- 挂载文件
- template的用法
- Moco在单元测试中使用
- Moco的不足
Moco介绍
在开发过程中,经常会使用到一些http网络接口,而这部分功能通常是由第三方开发团队或者是后端同事进行开发的,在我们开发时不能给我们提供服务,更有甚者,要集成的服务在开发时还不存在。这为我们的联调和测试造成了麻烦,常见的解决方案是搭建一个web server。
为什么要开发Moco这个框架?
具体到模拟服务上,处理的手法也是各种各样,因为服务以HTTP集成居多,无论是Web Service,还是REST,所以,一种典型的做法是,开发一个模拟服务,打成WAR包,部署到一个应用服务器上。而我们知道,一旦牵扯到应用服务器部署,就是非常耗时的,部署的时间量级通常是分钟级的。而且,模拟服务器通常不是一次性的工作,我们需要在开发过程中,反复调整,这就进一步增加了维护一个模拟服务器的成本。有的应用服务器是非常消耗资源的,要用专门的机器来部署它。更进一步,如果机器资源有限,团队就只能共享一台机器,这样,即便我为测试自己的部分做一个小的改动,很有可能因为得不到机器的使用权,而要等上几天时间
Moco就是针对这样一个特定的场景而生的。Moco是一个简单搭建模拟服务器的程序库/工具,这个基于 Java 开发的开源项目已经在 Github 上获得了不少的关注。该项目的简介是这样描述自己的:Moco 是一个简单搭建 stub 的框架,主要用于测试和集成。
开发团队只要根据自己的需要进行相应的配置,就会很方便得到一个模拟服务器。而且,由于 Moco 本身的灵活性,其用途已经不再局限于最初的集成测试,比如,Moco 可以用于移动开发,模拟尚未开发的服务;Moco 还可以用于前端开发,模拟一个完整的 Web 服务器等等。
Moco本身支持API和独立运行两种方式。通过使用API,开发人员可以在JUnit、JBehave等测试测试框架里使用Moco,极大程度地降低了集成点测试的复杂度
Moco可以提供以下服务:
- HTTP APIs
- Socket APIs
- REST API
Moco原理简介:Moco会根据一些配置,启动一个真正的HTTP服务(会监听本地的某个端口)。当发起请求满足一个条件时,它就给回复一个应答。Moco的底层没有依赖于像Servlet这样的重型框架,而是基于一个叫Netty网络应用框架直接编写的,这样一来,绕过了复杂的应用服务器,所以,它的速度是极快的
Moco已经在github上开源,可点击连接:https://github.com/dreamhead/moco
Moco独立运行所需环境
Moco独立运行时所需准备的有:
- Java运行环境
- moco-runner-0.11.0-standalone.jar
如何运行Moco
启动http服务
Moco的运行非常简单,只需要一行命令即可
如在命令行中运行:java -jar <path-to-moco-runner> http -p <monitor-port> -c < configuration -file>
<path-to-moco-runner>
:moco-runner-0.11.0-standalone.jar包的路径<monitor-port>
:http服务监听的端口<configuration -file>
:配置文件路径
这就在本地启动了一个http server,其中监听端口是12345,配置文件是MocoApi.json。只要在本机发起一个请求,如:http://localhost:12345,该请求就会被这个web server handle
如果别的机子想访问这个服务,只要把localhost替换成本机IP即可
启动https服务
启动https服务,需要先生成证书,并用如下命令启动服务:地方多发呆发地方的地方的地方的发呆发:java -jar <path-to-moco-runner> https -p <monitor-port> -c < configuration -file> --https <path-to-cert.jks > --cert mocohttps --keystore mocohttps
<path-to-moco-runner>
:moco-runner-0.11.0-standalone.jar包的路径<monitor-port>
:http服务监听的端口<configuration -file>
:配置文件路径<path-to-cert.jks>
:证书路径
这就在本地启动了一个http server,其中监听端口是12346,配置文件是MocoApi.json,证书文件是test.cer
Moco HTTP(s) API配置
启动服务之后,必然会根据需求stub出各种各样接口反馈,我们会把这个配置放在一个json文件中,启动Moco的时候,需要指定使用的配置文件路径,这样配置就可以生效了。Moco服务可以检测到配置文件的变更,假如你修改了配置文件,不需要重新启动Moco,服务照样可以生效。更详细的配置介绍请查看:https://github.com/dreamhead/moco/blob/master/moco-doc/apis.md
配置文件的工作原理大致如下:
如何在配置文件添加注释
json不支持注释,想要添加注释的话,可以在description字段中加入描述
约定请求Body
约定接口的uri
约定请求参数
约定请求方法
约定HTTP版本
约定请求头部
约定cookie
约定请求form
表单可以添加多项,多项的时候,必须全部匹配,接口才算匹配成功
约定以指定xml作为请求body
用xpath对请求进行匹配
约定以指定json作为请求body
用正则表达式对请求进行匹配
匹配操作
设置Response content
设置Response 状态码
设置Response HTTP版本
设置Response 头部
设置重定向
设置cookie
挂载文件
template的用法
Moco内置了一些变量,在response中可以使用这些变量,让反馈更加智能,以下列举了常用的变量
- req.version
- req.version
- req.method
- req.content
- req.headers
- req.queries
- req.forms
- req.cookies
使用举例如下:
Moco在单元测试中使用
Moco除了可以单独运行外,还可以在单元测试中运行,测试过程中,Moco会启动一个web server来处理我们的请求
运行在单元测试中的moco server也可以选择加载json配置文件
通过stub后台,便可对http请求进行测试了
Moco的不足
Moco的使用很简单,配置也很方便,目前更是提供了http、rest、socket服务。但是也仅仅是能stub出接口,模拟出简单的场景。如果接收到请求后需要做一些处理,如需查询数据库、进行运算、或者一些复杂的操作,就无能为力了。所以是否选用Moco,就取决于开发者是否只是需要一个简单的模拟服务器。
Mock Server利器 - Moco相关推荐
- 接口自动化测试:mock server之Moco工具
什么是mock server mock:英文可以翻译为模仿的,mock server是我们用来解除依赖(耦合),假装实现的技术,比如说,前端需要使用某些api进行调试,但是服务端并没有开发完成这些ap ...
- 如何用Serverless搭建Mock Server?
引言 (一)什么是Serverless 无服务器Serverless是一种云原生开发模型,可使开发人员专注构建和运行应用,而无需管理服务器.云函数(Serverless Cloud Function, ...
- Mock神器之Moco使用操作
MockServer之moco-runner MockServer mock是什么 mock 使用场景 Mock Server框架 moco moco框架介绍及运行 配置https服务 MockSer ...
- 走进Java接口测试之简单快速的Mock Server Moco
文章目录 一.引言 二.简介 三.原理 四.使用 1.约定请求 URI 2.约定请求 Queries 3.约定请求 Get 方法 4.约定请求 Post 方法 5.约定请求 Headers 6.约定请 ...
- 构建前端Mock Server的利器/Json-Server
痛点 项目中前端和后端通常是并行开发,为了减少等待后端接口开发的时间,我们经常需要在本地模拟后端接口用来测试前端效果.这种做法称之为构建前端Mock.平日里我接触的前端Mock方法大致可以分为以下两种 ...
- 1分钟搭建极简mock server
摘自博客园:https://www.cnblogs.com/mikasama/p/9838480.html 1.无聊的背景.起源: 如今的业务系统越来越复杂庞大,各个功能直接的调用也是多如牛毛,但如果 ...
- Mock工具之Moco使用教程
目录 一.什么是Moco 二.安装&配置 三.接口配置&测试 3.1 第一个简单的请求: 3.2 Get请求: 3.3 Post请求: 3.4 返回值为Json格式的请求: 3.5 带 ...
- Mock技术之Moco方法
目录 一.基本介绍 二.基本使用 三.常见疑问 一.基本介绍 Moco是后端 Mock Server中常用的一种方法,主要特点: Moco 本身支持 API 和独立运行两种方式.通过 API ,开发人 ...
- 如何优雅的使用Mock Server
事出有因 昨天跟同事讨论我们在用的rap2(一个集接口编写和mock server的开源项目)和刚上线了一个easy-mock的server,到底哪个好用. 我们主要讨论的点有个两个: 接口的一致性. ...
最新文章
- SQLServer查看存储过程的方法
- java pem 私钥_将PEM导入Java密钥库
- java和c 进行des_c语言的des加密,怎么用java解密
- 转 在b/s开发中经常用到的javaScript技术
- 《软件需求模式》阅读笔记04
- 操作系统回忆录:进程、线程、资源调度
- vue下拉框值改变_vue select下拉框绑定值不跟着变问题
- Hystrix熔断原理
- 深入剖析C++中的string类
- 蓝桥杯历届试题----分糖果(模拟)
- Android Weekly Notes Issue #230
- onloadsuccess: function获取不到表格数据_R语言输格式技巧系列(二),再精细一点,定制包含亚组的表格...
- Spring之@Configuration配置解析
- js事件流 事件捕获 及时间冒泡详解
- 欧姆龙plc学习笔记(六)(从cx-one上传程序到欧姆龙plc)
- 基于STM32的小游戏——谷歌小恐龙(Chrome Dino Game)
- 【Redis】Redis配置文件详解
- TSX常见简单用法(入门) Vue3+Vite
- Lattice开发工具 diamond总结
- 修改bash中PS1命令提示符的颜色
热门文章
- 判断mac地址单播还是组播(shell脚本)
- JS 数组常用函数(数组合并、数组转字符串、顺序反转、范围选择、排序、插入数据、删除数据)
- 初识联邦学习(Federated learning)
- N - Dragon Balls(并查集+深度的意义
- redis启动.停止.重启
- 滴水穿石-07Java开发中常见的错误
- FirstDjangoWebApp-1
- Linux Kernel File IO Syscall Kernel-Source-Code Analysis(undone)
- 温习下C语言一些函数
- JavaScript高级程序设计读书笔记(一)