WireMock 简介

WireMock 简介_第1张图片
WireMock 简介_第2张图片

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://:/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 简介)