• 详解构建mock服务最方便的神器——Moco


    moco介绍

    moco框架是github上的一个开源项目,可模拟http,https,Socket协议的mock操作。如果大家不了解什么是mock请参考文章:

    从0到1学会使用SpringBoot 搭建mock Server

    这里重点介绍moco的standolone方式的用法! 下载地址:https://github.com/dreamhead/moco,点击下图中的Download Standalone Moco Runner 即可

    启动moco 非常的简单

    java -jar moco-runner--standalone.jar http -p 9999 -c test.json

    这个命令也非常容易理解(把test.json放到moco.jar的相同目录即可)

    http 表示使用的协议。Moco支持http,https,Socket三种协议

    -p 表示使用的端口 ,不使用该参数默认启动端口58593

    -c 是定义的mock 请求和与其对应的响应文件,使用json格式,示例如下:

    1. [
    2. {
    3. "request":
    4. {
    5. "uri":"/hello"
    6. },
    7. "response":
    8. {
    9. "text":"moco"
    10. }
    11. }
    12. ]

    此时我们在浏览器输入:http://127.0.0.1:9999/hello 回看到浏览器中显示信息 moco。这就是最简单的moco mock的实例!大家是不是感觉到使用moco创建mock 简直方便到起飞!

    moco命令介绍

    常用命令如下:

    http实例,前面已经介绍

    java -jar moco-runner--standalone.jar http -p 12306 -c foo.json

    https实例

    java -jar moco-runner--standalone.jar https -p 12306 -c foo.json --https /path/to/cert.jks --cert mocohttps --keystore mocohttps

    同时处理多个json请求

    java -jar moco-runner--standalone.jar http -p 12306 -c "*.json"

    备注:该命令在windows系统中运行报错,建议在linux系统中运行,亲测centos运行正常。

    java -jar moco-runner--standalone.jar http -p 12306 -g settings.json

    我们可以统一设置要执行的json文件(即配置文件),当json文件非常多时,这种方式显然能够提升执行效率,具体代码如下:

    1. [
    2. {
    3. "include" : "foo.json"
    4. },
    5. {
    6. "include" : "bar.json"
    7. }
    8. ]

    更多信息可以参考

    https://github.com/dreamhead/moco/blob/master/moco-doc/global-settings.md

    其他参数

    -q 使用Quiet 模式,该模式下不会显示请求和响应的详细信息

    Version 查看moco的版本信息

    -s 9527 关闭moco

    Json文件常用实例

    在一个json文件中设置多个请求,一个get请求,一个post请求并且是json格式,一个是使用了template函数的get请求

    1. [
    2. {
    3. "request":{
    4. "uri":"/withGetDemo",
    5. "method":"get"
    6. },
    7. "response":{
    8. "text":"this is a get method "
    9. }
    10. }
    11. ,
    12. {
    13. "request":{
    14. "uri":"/withPostDemo",
    15. "method": "post",
    16. "headers": {
    17. "content-type": "application/json"
    18. },
    19. "json": {
    20. "name": "xiaoming",
    21. "age": "18"
    22. }
    23. },
    24. "response":{
    25. "text":"this is a post method"
    26. }
    27. },
    28. {
    29. "request": {
    30. "uri": "/template"
    31. },
    32. "response": {
    33. "text": {
    34. "template": "${now(\"yyyy-MM-dd\")}"
    35. }
    36. }
    37. }
    38. ]

    其他api详情请参考

    https://github.com/dreamhead/moco/blob/master/moco-doc/apis.md

    更多实例请参考

    https://github.com/dreamhead/moco/tree/master/moco-runner/src/test/resources

    moco的不足

    使用moco有二周的时间了,暂时总结了两点不足:

    1. 新添加的json文件,不能立即生效,需要重启moco-runner--standalone.jar,如果多人同时使用moco,新增或者更新mock时,需要协调通知。

    2. Mock的请求不能存储到数据库中,对于统计mock历史请求结果不够友好,如果想进一步解决该问题,需要编写代码解析日志来完成对mock请求信息的统计

  • 相关阅读:
    【leetcode】【2022/11/14】805. 数组的均值分割
    C++ 移动构造函数详解
    CentOS下将 /home 目录合并到 / 目录
    线性代数学习笔记9-3:相似矩阵、对角矩阵是特殊的相似矩阵、若尔当标准型Jordan form
    研发提效必备技能:手把手教你基于Docker搭建Maven私服仓库
    微服务高可用容灾架构设计
    机器学习基础-Pandas学习笔记
    难点组件之间的传值——反向传值
    2333. 最小差值平方和-排序加二分查找,力扣c语言题解
    Linux安装Zookeeper详细步骤(下载,安装,配置,启动,停止)
  • 原文地址:https://blog.csdn.net/liwenxiang629/article/details/126244228