写点什么

WireMock Spring Boot 将简化 Spring Boot 应用的 WireMock 配置

  • 2023-03-27
    北京
  • 本文字数:1483 字

    阅读完需:约 5 分钟

WireMock Spring Boot将简化Spring Boot应用的WireMock配置

WireMock是一个构建 API mock 的灵活工具,新的WireMock Spring Boot简化了 Spring Boot 应用中基于 JUnit 的集成测试的 WireMock 配置。


Maciej Walkowiak是一位自由职业的架构师和开发者,他在 2023 年 2 月发布了第一个版本 WireMock Spring Boot。该项目会自动配置 Spring 环境属性,并提供一个完全声明式的 WireMock 设置。另外,还可以使用多个WireMockServer实例,每个 HTTP 客户端对应一个实例。最近,这个新的工具不会向 Spring 应用上下文中发布额外的 bean,但是会将它们保存在于应用上下文关联的独立存储中。


添加如下 Maven 依赖之后就可以使用 WireMock Spring Boot:


<dependency>    <groupId>com.github.maciejwalkowiak.wiremock-spring-boot</groupId>    <artifactId>wiremock-spring-boot</artifactId>    <version>0.1.0</version>    <scope>test</scope></dependency>
复制代码


目前,Maven Central 仓库中还没有提供这个依赖,但是可以通过 Git 的JitPack包仓库来使用它。在第一次请求时,JitPack 会从 Git 仓库下载代码,并构建代码以提供构建制品(artifact),比如 JAR 文件。如果想了解更多信息的话,请参阅 JitPack 的文档


在制品发布到 Maven Central 仓库之前,我们应该在_pom.xml_中添加如下的 JitPack 仓库:


<repositories>    <repository>        <id>jitpack.io</id>        <url>https://jitpack.io</url>    </repository></repositories>
复制代码


使用@SpringBootTest注解的测试,以及其他使用SpringExtension类的注解测试,可以使用 @EnableWireMock注解进行标注,该注解会启用WireMockSpringExtension并添加测试上下文定制器。我们可以使用@ConfigureWireMock来配置 mock,它会创建一个WireMockServer,并使用**property**指定的名称来作为环境属性的名称,这样的环境属性可以用来检索 WireMockServer:


@SpringBootTest@EnableWireMock({        @ConfigureWireMock(name = "studentservice", property = "studentservice.url")})class StudentControllerTest {    @Autowired    private Environment environment;
@WireMock("studentservice") private WireMockServer wireMockServer;
@Test void studentTest() { environment.getProperty("studentservice.url"); wireMockServer.stubFor(get(urlEqualTo("/student"))
}}
复制代码


在上述的样例中,我们使用**environment.getProperty("studentservice.url")方法来检索WireMockServer**实例的 URL。


WireMock扩展可以通过配置注解中的**extensions**参数进行配置:


@ConfigureWireMock(extensions = { … }, …)
复制代码


默认情况下,包含映射文件的 classpath 目录会被设置为_wiremock/{server-name}/mappings_,但是也可以通过配置注解中的**stubLocation**参数进行变更:


@ConfigureWireMock(stubLocation = "customLocation", …)
复制代码


相对于Spring Cloud Contract WireMock,WireMock Spring Boot 的优势在于自动设置的 Spring 属性和多个 **WireMockServer**实例的声明式配置。但是, Spring Cloud Contract WireMock支持契约测试、REST 文档以及其他的特性。


WireMock Spring Boot 使用了 Spring Cloud Contract WireMock 和Spring Boot WireMock项目以及“使用WireMock和JUnit 5进行Spring Boot集成测试”这篇文章的概念和想法。关于该项目的更多信息,可以在GitHub上找到。


原文链接:

WireMock Spring Boot Simplifies the WireMock Configuration for Spring Boot Applications


相关阅读:

Just:Spring Boot 应用的新命令行界面

Spring Authorization Server 1.0 提供了 OAuth 2.1 和 OpenID Connect 1.0 实现

2023-03-27 08:003927

评论

发布
暂无评论
发现更多内容
WireMock Spring Boot将简化Spring Boot应用的WireMock配置_语言 & 开发_Johan Janssen_InfoQ精选文章