test mock-05-mockserver mock-server/hoverfly/wiremock 对比
拓展阅读
jmockit-01-test 之 jmockit 入门使用案例
mockito-01-overview mockito 简介及入门使用
MockServer
MockServer 能够通过 Java、JavaScript 和 Ruby 编写的客户端轻松模拟与其它系统通过 HTTP 或 HTTPS 进行集成的过程。
MockServer 还包括一个代理,可以检查所有被代理的流量,包括加密的 SSL 流量,并支持端口转发、Web 代理(即 HTTP 代理)、HTTPS 隧道代理(使用 HTTP CONNECT)等功能。
Maven Central 包含以下 MockServer 构件:
- mockserver-netty - 一个模拟和记录请求与响应的 HTTP(S) Web 服务器
- mockserver-netty:shaded - mockserver-netty(如上所述),带有所有嵌入的依赖项
- mockserver-war - 一个可部署的 WAR 文件,用于模拟 HTTP(S) 响应(适用于任何 JEE Web 服务器)
- mockserver-proxy-war - 一个可部署的 WAR 文件,用于记录请求和响应(适用于任何 JEE Web 服务器)
- mockserver-maven-plugin - 一个 Maven 插件,用于使用 Maven 启动、停止和分叉 MockServer
- mockserver-client-java - 一个用于与服务器和代理进行通信的 Java 客户端
是什么?
MockServer 是一个可通过 HTTP 或 HTTPS 与其集成的任何系统进行交互的工具,可以用作:
- 配置为为不同的请求返回特定的响应的模拟
- 记录并可选择修改请求和响应的代理
- 在同一时间对某些请求进行代理并对其他请求进行模拟
当 MockServer 收到请求时,它会将请求与已配置的活动期望进行匹配。
然后,如果找不到匹配项,它将根据需要代理请求;否则,将返回 404。
对于每个接收到的请求,会执行以下步骤:
- 查找匹配的期望并执行操作
- 如果没有匹配的期望,则代理请求
- 如果不是代理请求,则返回 404
期望定义了要采取的操作,例如,可以返回一个响应。
MockServer 支持以下操作:
- 当请求匹配期望时,返回一个“模拟”响应
mock-server/hoverfly/wiremock 对比表格
以下是 MockServer、Hoverfly 和 WireMock 之间的简要对比表格:
特性/功能 | MockServer | Hoverfly | WireMock |
---|---|---|---|
支持的协议 | HTTP, HTTPS | HTTP, HTTPS, TCP | HTTP, HTTPS, TCP, SMTP, LDAP, gRPC, WebSockets, GraphQL, SNMP, Telnet, SSH, Netconf |
动态生成响应 | 是 | 是 | 是 |
请求匹配功能 | 强大的匹配功能,包括 URL、HTTP 方法、请求头、请求体等 | 强大的匹配功能,支持 JSONPath、XPath 等 | 强大的匹配功能,支持 URL、HTTP 方法、请求头、请求体等 |
动态端口分配 | 是 | 是 | 是 |
录制和回放 | 是 | 是 | 是 |
客户端支持 | Java、JavaScript、Ruby | Java、Go、JavaScript | Java、JavaScript、Ruby、Scala、Go、Groovy |
官方文档 | MockServer 文档 | Hoverfly 文档 | WireMock 文档 |
GitHub 仓库 | MockServer GitHub | Hoverfly GitHub | WireMock GitHub |
MockServer 的主要实现原理:
-
请求匹配: 当 MockServer 接收到请求时,它会将请求与配置的期望进行匹配。匹配过程包括 URL、HTTP 方法、请求头、请求体等多个方面。如果找到匹配的期望,MockServer 将执行相应的操作。
-
期望配置: 用户可以通过 API 或配置文件定义期望,其中包含请求的匹配条件和对应的响应。期望配置中可以包含动态生成响应的逻辑,例如基于请求参数的模板生成。
-
动态生成响应: MockServer 允许用户通过模板定义动态生成的响应。这使得可以根据请求的具体内容动态生成响应,例如返回不同的数据或状态码。
-
录制和回放: MockServer 支持录制实际的请求和响应,并在后续测试中进行回放。这有助于模拟真实系统的交互,并能够在测试过程中保持一致性。
-
客户端支持: MockServer 提供了多语言的客户端支持,包括 Java、JavaScript、Ruby。这样,用户可以轻松地集成 MockServer 到不同的应用程序中。
-
动态端口分配: MockServer 支持动态端口分配,以避免端口冲突问题。这允许用户并行运行多个 MockServer 实例,而不必手动配置端口。
-
跨平台: MockServer 的设计具有跨平台性,可以在不同操作系统上运行。这使得用户可以在各种环境中使用 MockServer,无论是在开发、测试还是生产环境。
小结
mock-server 的模拟思想在实际对于常见的服务 mock 非常实用。
录制回放可以用来做很多事情,比如流量回放之类的。
后续可以考虑整合这个工具,实现一个 mock 服务平台。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!