test mock-04-hoverfly Easy Creation of Stub Http Servers for Testing hoverfly与wiremock 对比

拓展阅读

test 之 jmockit-01-overview

jmockit-01-test 之 jmockit 入门使用案例

mockito-01-overview mockito 简介及入门使用

PowerMock

Mock Server

ChaosBlade-01-测试混沌工程平台整体介绍

jvm-sandbox 入门简介

Hoverfly Java - Easy Creation of Stub Http Servers for Testing

Java原生语言绑定的Hoverfly,是一个Go语言代理工具,允许您在单元测试中模拟HTTP服务。

这个过程的另一个术语是服务虚拟化。

特性:

  • 模拟HTTP/HTTPS服务
  • 基于URL、方法、正文和头部组合的严格或宽松的HTTP请求匹配
  • 流畅且表达力强的DSL,用于轻松生成模拟服务
  • 在请求/响应体生成期间将对象自动编组成JSON
  • 通过捕获实时流量创建模拟
  • Hoverfly是一个代理,因此您无需更改发出请求的主机
  • 单个Hoverfly实例支持多个主机/服务
  • 自动支持HTTPS,无需额外配置
  • 支持相互TLS身份验证捕获
  • 与标准Hoverfly JSON兼容,方便在Java和其他原生语言绑定之间重用数据
  • 使用外部管理的Hoverfly集群进行API模拟
  • 请求验证
  • 响应模板化
  • 有状态的捕获/模拟
  • JUnit 5扩展

入门例子

maven

<dependency>
    <groupId>io.specto</groupId>
    <artifactId>hoverfly-java</artifactId>
    <version>0.14.0</version>
    <scope>test</scope>
</dependency>

代码示例

最简单的方法是使用JUnit规则开始。

在幕后,JVM代理设置将被配置为使用托管的Hoverfly进程,因此您可以像往常一样发出请求,只不过这次Hoverfly会响应而不是真实服务(假设您的HTTP客户端尊重JVM代理设置):

import static io.specto.hoverfly.junit.core.SimulationSource.dsl;
import static io.specto.hoverfly.junit.dsl.HoverflyDsl.service;
import static io.specto.hoverfly.junit.dsl.ResponseCreators.success;

public class HoverflyExample {

    @ClassRule
    public static HoverflyRule hoverflyRule = HoverflyRule.inSimulationMode(dsl(
        service("www.my-test.com")
            .get("/api/bookings/1")
            .willReturn(success("{\"bookingId\":\"1\"}", "application/json"))
    ));

    @Test
    public void shouldBeAbleToGetABookingUsingHoverfly() {
        // When
        final ResponseEntity<String> getBookingResponse = restTemplate.getForEntity("http://www.my-test.com/api/bookings/1", String.class);

        // Then
        assertThat(getBookingResponse.getStatusCode()).isEqualTo(OK);
        assertThatJSON(getBookingResponse.getBody()).isEqualTo("{"\"bookingId\":\"1\"}");
    }

// Continues...

Hoverfly Java 和 wiremock 比较有什么差异点?

Hoverfly JavaWireMock 都是用于服务虚拟化和模拟的工具,但它们有一些区别。

以下是它们之间的一些差异点:

1. 实现语言:

  • Hoverfly Java: Hoverfly Java 是 Hoverfly 的 Java 语言绑定,基于 Hoverfly 服务虚拟化工具。

  • WireMock: WireMock 是使用 Java 编写的独立的服务虚拟化库和服务器。

2. 语法和DSL:

  • Hoverfly Java: 提供了流畅且表达力强的 DSL(领域专用语言),用于定义和生成模拟服务的规则。

  • WireMock: 也有自己的 DSL,用于配置服务的模拟和响应。

3. 支持的语言和平台:

  • Hoverfly Java: 主要支持 Java 平台,适用于 Java 应用程序的单元测试。

  • WireMock: 由于其独立性,支持多种语言和平台,并且可以用于各种应用程序和测试场景。

4. JUnit集成:

  • Hoverfly Java: 提供了JUnit扩展,简化了在测试中集成 Hoverfly 的过程。

  • WireMock: 也可以与 JUnit 集成,但没有 Hoverfly Java 提供的专用扩展。

5. 流量捕获:

  • Hoverfly Java: 具有流量捕获功能,可以通过捕获实时流量来创建模拟服务。

  • WireMock: 通常需要手动配置 stubs 或使用录制和回放工具来创建模拟服务,相对于 Hoverfly Java 较为简单。

6. TLS和HTTPS支持:

  • Hoverfly Java: 提供对相互TLS身份验证的支持,并自动支持 HTTPS。

  • WireMock: 也支持 HTTPS,但相互TLS身份验证的支持可能需要更多手动配置。

7. 社区和生态系统:

  • Hoverfly Java: 相对较新,可能没有 WireMock 那样庞大的社区和生态系统。

  • WireMock: 是一个成熟且广泛使用的项目,有大量的社区支持和丰富的文档。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值