精华内容
下载资源
问答
  • 文章目录1 MockServer是什么2 为什么要使用MockServer3 MockServer的作用4 搭建MockServer服务 1 MockServer是什么 MockServer其实就是一个用来模拟http(https)请求响应结果数据的服务器。通过这个MockServer服务...

    1 MockServer是什么

    MockServer其实就是一个用来模拟http(https)请求响应结果数据的服务器。通过这个MockServer服务,我们可以极大地方便接口的调试。

    2 为什么要使用MockServer

    如今的业务系统模块越来越多,功能也越来越复杂。及时的与前端调试也迎来了一些小的挑战。

    假设有一个场景:
    新项目刚开始启动时,这时候后台部分的接口都没有开发完成,这时候如果前端需要调试页面,该怎么调试呢?

    傻傻的等着后台开发完成再进行调试?不可能的,这样你会影响项目正常上线。那么模拟数据就显得非常重要了,如何快速有效的模拟真实场景的数据?

    有两种方案:

    • 通常情况下,后台会把请求接口Api的结果先定义好,写死在action层,然后返回给前端,但是这种方案现在已经不怎么用了,效率太低
    • 现在比较流行的方案,一般会搭建一些server来进行mock,这样可以使得被开发功能的调试和测试功能能够正常进行下去。而MockServer就可以有效的解决这个问题,这也是MockServer的出现的原因

    网上找了张图片,可以很好的说明使用MockServer前后的不同,如下图所示:
    使用mock之前:
    在这里插入图片描述
    使用mock之后:
    在这里插入图片描述
    使用了Mock Server之后,前端可以不再依赖与后台的业务接口,在后台接口未开发完成时,可以模拟一些业务数据,来进行前台页面的调试,极大的节省了调试的成本

    3 MockServer的作用

    对于通过HTTP或HTTPS与之集成的任何系统,MockServer都可以用作以下用途:

    • 对于任何的http或者https请求,可以结合具体的业务场景,配置mock,来模拟接口Api,返回一个具体的响应结果

    • 代理一个记录,并且可以选择修改请求路径和响应的结果

    • 同时代理某些请求和模拟其他请求(both a proxy for some requests and a mock for other requests at the same time)

    When MockServer receives a request it matches the request against active expectations that have been configured, if no matches are found it proxies the request if appropriate otherwise a 404 is returned.

    首先我们会配置active expectations,当MockServer接收到与之匹配的http或者https请求时,就会返回匹配到的模拟的响应结果。如果没有匹配到active expectations,那么就会看看是否有合适的代理,有的话会代理这些http请求,否则返回404:

    HTTP/1.1 404 Not Found
    content-length: 0
    connection: keep-alive
    
    <Response body is empty>
    
    Response code: 404 (Not Found); Time: 33ms; Content length: 0 bytes
    

    4 搭建MockServer服务

    4.1 部署MockServer服务详细步骤

    4.1.1 第一种方式(推荐)

    • 添加maven依赖

      <!-- mockserver -->
      <dependency>
           <groupId>org.mock-server</groupId>
           <artifactId>mockserver-netty</artifactId>
           <version>5.11.1</version>
      </dependency>
      
    • 启动MockServer

      @PostConstruct
      public void startMockServer() {
          mockServer = startClientAndServer(1080);
          System.out.println("mock server【" + mockServer + "】 start...");
      }
      

    这样,即可实现基础的mock server服务部署。

    4.1.2 第二种方式

    • 从github上下载源码
      git clone https://github.com/jamesdbloom/mockservice.git

    • 进入项目根目录
      cd mockservice

    • 通过maven构建一个包含所有依赖的可执行jar包
      ./mvnw clean package

    • 成功生成的可执行jar包,在mockserver-netty/target/目录下
      mockserver-netty/target/mockserver-netty-5.11.1-jar-with-dependencies.jar

    • 将打包好的可执行jar包,上传到Linux服务器上,启动成功后,MockServer即部署完成

    4.2 启动Shell脚本

    这里送给老铁们一个shell脚本,方便启动jar项目服务:

    #!/bin/sh
    
    DIR=$(dirname $(readlink -f "$0"))
    JAR_NAME="mockserver-netty-5.11.1-jar-with-dependencies"
    
    JAR_FILE=${DIR}/${JAR_NAME}.jar
    PID_FILE=${DIR}/${JAR_NAME}.pid
    PID=$(cat ${PID_FILE})
    
    if [ $PID -gt 0 ];then
    	kill -9 $PID
    	rm -f ${PID_FILE}
    	echo "mock server stop finished"
    fi
    java -Xms256m -Xmx256m -jar ${JAR_FILE} -serverPort 1001 & echo $! > ${PID_FILE}
    

    4.3 访问MockServer UI界面

    • 使用以下命令访问MockServer UI界面
      http(s)://<host>:<port>/mockserver/dashboard

    访问成功的UI界面,如下图所示:
    在这里插入图片描述

    MockServer UI界面可以看到MockServer内部的运行状态,主要包括以下部分:

    • logs
    • active expectations
    • requests received
    • proxied requests

    5 MockServer服务的基础使用

    5.1 项目启动时,初始化Expectations

    • 首先创建一个配置类ExpectationInit,把需要初始化的期望初始化:

      package cn.smilehappiness.mockserver.expectation;
      
      import org.mockserver.mock.Expectation;
      import org.mockserver.server.initialize.ExpectationInitializer;
      
      import static org.mockserver.model.HttpRequest.request;
      import static org.mockserver.model.HttpResponse.response;
      
      /**
       * <p>
       * Expectation Initializer Class,用来初始化 expectation
       * <p/>
       *
       * @author smilehappiness
       * @Date 2020/8/16 17:13
       */
      public class ExpectationInit implements ExpectationInitializer {
      
          @Override
          public Expectation[] initializeExpectations() {
              return new Expectation[]{
                      new Expectation(
                              request().withPath("/simpleFirst")).thenRespond(response().withBody("some first response")
                      ),
                      new Expectation(
                              request().withPath("/simpleSecond")).thenRespond(response().withBody("some second response")
                      )
              };
          }
      
      }
      
    • 启动mock server服务时,初始化期望配置类

      @PostConstruct
      public void startMockServer() {
          ConfigurationProperties.enableCORSForAPI(true);
          //初始化期望配置类
          ConfigurationProperties.initializationClass(ExpectationInit.class.getName());
      
          //持久化期望数据
          ConfigurationProperties.persistExpectations(true);
          
          mockServer = startClientAndServer(1080);
          System.out.println("mock server【" + mockServer + "】 start...");
      }
      

    以上两步,即可在MockServer服务启动时,初始化期望模拟数据。

    5.2 访问模拟的数据

    项目启动时,设置了两个简单的期望数据,可以通过Restful Api访问数据,访问格式:http://ip:port/path
    比如: 访问http://localhost:1080/simpleFirst

    【请求结果】

    HTTP/1.1 200 OK
    connection: keep-alive
    content-length: 19
    
    some first response
    
    Response code: 200 (OK); Time: 32ms; Content length: 19 bytes
    

    5.3 Creating Expectations && Query Expectations

    创建和获取模拟的Expectations期望数据

    5.3.1 Creating Expectations

    可以使用postman等工具,添加expectations,比如:
    使用put请求,http://localhost:1080/mockserver/expectation/mockserver/expectation为固定写法)
    请求json串内容:

    {
      "id": "test_mock",
      "httpRequest" : {
        "path" : "/hello/mock",
        "method":"POST"
      },
      "httpResponse" : {
        "body" : {
        "status": 200,
        "result": "Welcome to mock server!"
        }
      },
      "priority" : 10
    }
    

    需要说明的是,这里id需要保证唯一,因为同一个path,会根据这个主键id修改之前的内容

    完整示例截图:
    在这里插入图片描述

    5.3.2 Query Expectations

    访问刚才创建的期望数据:
    使用post请求,访问链接http://localhost:1080/hello/mock,即可访问到刚才创建的期望数据,如下图所示:
    在这里插入图片描述

    5.4 clear某个不需要的path

    使用url:http://localhost:1080/mockserver/clear?type=EXPECTATIONS
    例如:
    在这里插入图片描述
    日志如下:
    在这里插入图片描述

    5.5 clear所有的path

    格式: curl -v -X PUT "http://localhost:1080/mockserver/reset
    比如,笔者使用postman操作:
    在这里插入图片描述
    所有的期望数据都被清空了,这个操作需要谨慎
    在这里插入图片描述

    至此,基础使用已经ok了,但是有个小问题,如果mock server重启了,那么UI界面上,数据都丢失了,那么,数据持久化也是需要解决的一个问题,下面介绍下,MockServer expectations 数据如何持久化

    6 数据持久化

    In MockServer expectations are only held in memory by default. However, it is possible to persist expectations to the local file system to ensure that they survive a restart of MockServer.

    上面这句话意思是,MockServer expectations默认把数据保存在内存中,但是,你可以把数据持久化到文件中,这样,再重启MockServer之后,数据不会丢失。

    持久化大致需要三个步骤:

    • persistExpectations属性,需要使用以下方式开启(true)
      ConfigurationProperties.persistExpectations(boolean persistExpectations)

    • 使用以下方法,设置expectations持久化的路径
      ConfigurationProperties.persistedExpectationsPath(String persistedExpectationsPath)
      The file path used to save persisted expectations as json, which is updated whenever the expectation state is updated (i.e. add, clear, expires, etc)

      比如: 设置path为persistedExpectations.json

    • 当MockServer服务启动时,会通过以下方法加载持久化文件,并初始化文件中每一组的期望数据,The expected format of the file is a JSON array of expectations
      ConfigurationProperties.initializationJsonPath(String initializationJsonPath)

      注意: 为了确保下次MockServer启动时初始化JsonPath时加载持久化的期望,那么persistedExpectationsPath应该匹配,并且persistExpectations需要设置为true

    配置后,重启MockServer,出现以下界面,说明持久化配置成功:
    在这里插入图片描述

    好啦,本部分内容先介绍到这里了,后续有用到代理(比如使用代理,隔离单个服务等等)相关的内容再更新吧,这里面说的,基本上可以满足日常使用了,希望对老铁们有所帮助哈。

    本文涉及到的相关代码已上传GitHub,需要的小伙伴们可以下载Code

    如果GitHub网速不好的话,也可以使用另一个下载链接下载

    参考资料链接:
    https://github.com/mock-server/mockserver
    https://www.mock-server.com/

    写博客是为了记住自己容易忘记的东西,另外也是对自己工作的总结,希望尽自己的努力,做到更好,大家一起努力进步!

    如果有什么问题,欢迎大家评论,一起探讨,代码如有问题,欢迎各位大神指正!

    给自己的梦想添加一双翅膀,让它可以在天空中自由自在的飞翔!

    展开全文
  • Postman mockserver详细教程 来自作者:和技术赛跑 链接: https://blog.csdn.net/testdeveloper/article/details/80559538.

    Postman mockserver详细教程
    来自作者:和技术赛跑
    链接: https://blog.csdn.net/testdeveloper/article/details/80559538.

    展开全文
  • MockServer   Documentation For usage guide please see: www.mock-server.com Change Log Please see: Change Log Community Chat Feature Requests Issues / Bugs Backlog ...
  • 使用mock-server配置私有环境变量并设置相应内容, 获取mock-sever的接口密钥AIP-key并创建接口名称, 将mock-server的url和接口密钥API-key一并添加在环境变量中, 在当前集合中创建新请求,在example中设置预期...

    背景

    工作中使用场景

    • 模拟那些无法实时连接的后端,
    • 或是没有开发出来的后端,用于获得结果反馈的一种测试方式。
    • 通过发送请求后,模拟后台返回的响应内容来确认当前系统的正确性。

    策略

    1. 使用mock-server配置私有环境变量并设置相应内容,
    2. 获取mock-sever的接口密钥AIP-key并创建接口名称,
    3. 将mock-server的url和接口密钥API-key一并添加在环境变量中,
    4. 在当前集合中创建新请求,在example中设置预期响应结果,使用环境变量中的mock-sever的url,并将环境变量中的mock-server的接口名称和API-key放到请求头(header)里,发送请求,获得预期结果。

    步骤

    1、新建mock sever

    在这里插入图片描述

    2. 输入mock的请求和响应设置,设置好点击next

    展开全文
  • Mock-- Server使用

    万次阅读 2018-08-22 14:22:11
    近日项目需求 使用mock-server来提供虚拟数据(API),方便在服务被调用方没有开发好的情况下,服务调用方能不被耽误的继续进行开发 。 我们的情况大概是这样: 我们的服务去调用 另一方提供的服务,另一方的服务...

    近日项目需求 使用mock-server来提供虚拟数据(API),方便在服务被调用方没有开发好的情况下,服务调用方能不被耽误的继续进行开发 。

    我们的情况大概是这样:

       我们的服务去调用 另一方提供的服务,另一方的服务可能还没有开发好,为了方便项目如期交付,他们只能做一次符合他们那边规则的数据,并且做一次数据非常麻烦,并把接口提供给我们。 我们只能通过接口一次访问数据,并把数据保存到movkServer,下次访问同样的链接,就要被路由到mockServer,而不会去掉用真实的服务(因为对方做一次数据很麻烦,所以原因你懂)。以此为背景。

    鉴于为了减少代码开发量,我在网上寻找了几个可行的mock-server ,发现可能一些地方不能满足项目需求,找到的有

       --- 雪里大神的   xxl-api  界面挺不错,但是暂时不支持设置RequestBody类型,raw类型参数,即对post提供的支持性不是很好。注意:已经看到放在TODO列表中,后续可能会支持。

       --- Mock Server  这个也稍微有点不满足需求。

    最后 找到 easy-mock ,经过测试发现 提供的功能,支持项目的需求。

       

    网址如下:  easy-mock

    采用的是Node开发的,后端存储 mongodb + redis

    如果想部署在本地,gitHub地址如下: easy-mock

    使用文档如下:  使用说明

    特性:  支持主流的method ,例如post,get,delete等,另外可提供虚拟数据,也可以代理真实服务。重要的是支持swagger导入。

    下面展示下:搭在自己服务器上的easy-mock:

        已经添加的两个接口:

         

       如果想代理接口,返回真实数据:

       点编辑接口 : 将里面的内容设置为真实的服务地址 即可

    这是一个post提交新增的数据, 点击预览,就可以进行测试了。注意预览的时候,把数据放在body中。展示如下:

    也可以手动编写虚拟的数据:

      例如  编辑接口时, 按照其格式写入数据:例如:

     其他功能就不在展示,这是一个比较好用的工具, 其官方文档写的也比较清晰。  感谢开源,感谢开发者。

    展开全文
  • 五、python MOCK SERVER

    2019-09-29 17:40:26
    五、MOCK SERVER(模拟) MOCK的意义 1.接口测试等待开发完成接口开发之后再进行,不符合测试的尽早测试的基本原则,我们可以利用MOCK工具来模拟接口,减少对开发的依赖,从而可使测试与开发同步进行 2.接口...
  • 改造vue-cli,使用mockjs搭建mock server

    千次阅读 2019-01-09 17:14:42
    最近准备开发一款web应用,考虑到可能会有前后端并行开发的场景,所以决定使用mockjs做mock server。 浏览官网文档时发现没有跑在webpack上的例子,索性自己找方法解决。 什么是mockjs?他的使用场景是什么? 当前端...
  • Moco 作为MockServer快速入门

    千次阅读 2016-11-25 15:32:07
    例如你有两个项目Boy和Girl项目需要使用同一个Mock Server,那么可以分别定义boy.json和girl.json配置文件,然后在全局文件中引入即可: 全局配置如下: [ { "context": "/boy", "include": "boy.json" }, { ...
  • Postamn是我们测试平时使用广泛的接口测试工具,它不仅仅可以完成我们平时工作中的单接口验证,一样可以帮助我们完成自动化的回归验证,节省系统上线测试人员的回归工作任务。   在本系列的课程里您将学习到...
  • Mock使用教程

    千次阅读 2019-05-23 18:34:15
    Element UI手册:https://cloud.tencent.com/developer/doc/1270 中文文档:http://element-cn.eleme.io/#/zh-CN ... 1:在项目里面新建一个mock文件夹,在mock文件夹里面新建一个test.json文件 test.json: ...
  • 【前端开发】 5分钟创建 Mock Server

    万次阅读 2015-12-03 20:07:45
    今天,我们打算花几分钟时间创建一个自己用来测试的 MockUp ...目标用 curl 访问 mockserver 可以获得自己想要的结果ubuntu@ubuntu:~/mockserver$ node client1.js ubuntu@ubuntu:~/mockserver$ curl http://localhos
  • Fiori使用destination解决跨域,destionation其实就是反向代理 注1:跨域就是url协议,域名,端口不同不能通信 1、使用 Web IDE 配置连接 在线版 Web IDE(https://account.hanatrial.ondemand.com),登陆后...
  • 使用RAP搭建前端Mock Server

    万次阅读 2016-08-22 20:03:36
    使用RAP搭建前端Mock Server
  • 【Postman】通过Postman的模拟服务(mock)进行Http交互的使用教程步骤一 创建Collection步骤二 添加Mocks步骤三 Add Request步骤四 创建example参考链接 步骤一 创建Collection 打开Postman之后,点击“new”,就...
  • 在现在的前端开发中经常需要和后台同步进行,所以很多时候后台并不能提供接口供你测试,这个时候就需要我们自己简单的搭建简单的接口做测试,下面就简单介绍一下,利用python flask简单搭建一个mock-server的过程: ...
  • Moco是一个简易的Mock Server搭建工具 Github开源链接:https://github.com/dreamhead/moco 一、准备工作 1. 下载Standalone Moco Runner 2.电脑需要安装Java环境 二、运行Moco 打开terminal,运行命令 ...
  • Mock Server

    2019-02-24 21:10:00
    此处使用standalone的方式,不使用api用法 启动方式(单独配置文件启动):java -jar (jar包位置) (协议) -p (端口) -c 配置文件地址 1 全局配置文件 [ {"context":"/path1", "incl...
  • 一、mockserver的应用 有时候测试我们需要调用一些三方接口或者未开发完成的接口,完成我们的业务流程测试,但是这时候可能我们只知道接口返回值,接口并没有完全开发完成或可以让我们任意调用,这时候就需要自己...
  • 简介:json-server是一款mock工具,支持前端本地运行,可以存储json数据的充当server,搭建非常简便,适合对数据进行简单的增删改查。 github地址: https://github.com/typicode/json-server json-server网址: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,439
精华内容 975
关键字:

mockserver使用教程