WireMock 简介

作者: 舌尖上的大胖 | 来源:发表于2019-06-10 05:53 被阅读0次

    WireMock 官网 http://wiremock.org

    一、开发过程中遇到的问题

    在服务端与客户端约了定了接口,但还没有完成开发时,客户端的处理方式:

    • 在程序中写模拟数据
      • 程序中增加垃圾代码,后期还要删除,可能对代码造成影响
      • 模拟异步请求不方便
      • 服务端接口开发完成后,需要重新书写网络请求部分的代码
      • JS、iOS、Android 多前端需要分别模拟数据,重复工作量
    • 使用 Nginx、http-server 等 WebServer
      • 只支持 GET 请求
      • 无法针对请求进行校验或特定处理
    • 自己写简单的程序模拟返回数据
      • 开发期间 API 还处于频繁变动时期,持续调整成本较高

    以上方法均不方便做单元测试

    • 对于需要演示的场景,没有后端业务服务器支撑,无法演示,客户端改造成本高

    二、WireMock

    ​ 模拟 API,进行快速,强大和全面的测试。WireMock 是基于 HTTP 的 API 模拟器。 有些人可能会认为它是服务虚拟化工具或模拟服务器。

    ​ 当依赖的 API 不存在或不完整时,它可以使您保持高效。 它支持测试真实 API 无法可靠生成的边缘情况和故障模式。 而且因为速度快,它可以将构建时间从几小时减少到几分钟。

    (一)运行

    1、运行模式
    • 独立运行模式
    • Web 部署
    2、下载及安装
    • Maven / Gradle
    • 独立运行的 Jar

    详见 Download and Installation

    3、运行

    这里只说明独立运行方式

    $ java -jar wiremock-standalone-2.21.0.jar
    

    (二)配置及使用

    支持的配置方式:

    • Java
    • 命令行
    • REST API
    • ==JSON API==
    1、基本配置

    这里只说 JSON 文件配置方式

    两个文件夹:

    • mappings 存放配置文件
    • __files 存放相关的资源文件

    JSON 配置:

    {
        "request": {
            "method": "GET",
            "url": "/api/mytest"
        },
        "response": {
            "status": 200,
            "body": "More content\n"
        }
    }
    

    指定 Response 的 Header:

    {
        "request": {
            "method": "GET",
            "url": "/whatever"
        },
        "response": {
            "status": 200,
            "headers": {
                "Content-Type": "text/plain",
                "Set-Cookie": ["session_id=91837492837", "split_test_group=B"],
                "Cache-Control": "no-cache"
            }
        }
    }
    
    2、通过文件指定 Response Body
    {
        "request": {
            "method": "GET",
            "url": "/body-file"
        },
        "response": {
            "status": 200,
            "bodyFileName": "path/to/myfile.xml"
        }
    }
    

    注意:

    • bodyFileName 指定的文件路径==必须是相对路径==,即不能以 / 开头,默认以 __files 为相对路径的起始路径

    • 所有文件的编码必须为 ==UTF-8==

    3、作为简单的文件服务器使用

    所有放在 __files 中的文件,均可以通过以下方式直接访问,无需配置映射:

    http://<host>:<port>/your/file/path
    
    4、未映射请求的提供默认响应结果
    {
      "priority":10,
      "request": {
        "method": "ANY",
        "urlPattern": ".*"
      },
      "response": {
        "status": 404,
        "jsonBody": {"status":"Error","message":"Endpoint not found"},
        "headers": {
          "Content-Type": "application/json"
        }
      }
    }
    
    5、Request 匹配
    • URL
    • HTTP Method
    • Query parameters
    • Headers
    • Basic authentication (a special case of header matching)
    • Cookies
    • Request body
    • Multipart/form-data

    (完)

    相关文章

      网友评论

        本文标题:WireMock 简介

        本文链接:https://www.haomeiwen.com/subject/rstaxctx.html