Mock基本介绍
mock就是对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建的方法。项目开发和测试过程中,遇到以下的情况时,就需要模拟结果返回。
1. 当另一方接口或服务还未完成,阻碍项目进度时,可以通过mock的方式,实现并行开发。
2. 另一方接口不稳定,而这边需要一个稳定的结果才能继续往下走流程时,也可以使用mock。有时候自动化测需要一个持续稳定的环境,也可以对不是很重要的服务进行mock处理。
3. 需要模拟异常情况,但是这种异常不容易触发时,可以使用mock实现。
Moco框架基本介绍
Moco的原理是应用于stub开发的,也就是桩代码(大概理解的意思就是用来代替某些代码的代码,这个不做深入的研究)。
Moco原理简介:Moco会根据一些配置,启动一个真正的HTTP服务(会监听本地的某个端口)。当发起请求满足一个条件时,它就给回复一个应答。Moco的底层没有依赖于像Servlet这样的重型框架,而是基于一个叫Netty网络应用框架直接编写的,这样一来,绕过了复杂的应用服务器,速度会很快
Moco框架的基本使用
moco框架是github上的一个开源项目,可以把这个项目源码拿下来使用 gradle编译为一个jar,也可以网上直接找 jar 包下载。 地址:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.10.0/ 可以自己找一个版本下载
也可以使用Maven导入jar包
<!-- https://mvnrepository.com/artifact/com.github.dreamhead/moco-runner -->
<dependency>
<groupId>com.github.dreamhead</groupId>
<artifactId>moco-runner</artifactId>
<version>1.1.0</version>
</dependency>
如果是直接导入jar包的话启动mock命令如下:
java -jar ./moco-runner-0.10.0-standalone.jar http -p 8080 -c api.json
采用maven导入的包启动mock如下
import com.github.dreamhead.moco.bootstrap.Bootstrap;
public class test {
//http -p 8080 -c api.json
public static void main(String[] args) {
(new Bootstrap()).run(new String[]{"http","-p","8080","-c","H:\\work\\TestNG_Maven\\src\\Mock/api.json"});
}
}
两种方式都可以启动Mock然后通过浏览器直接访问我们的接口