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:
目前,Maven Central 仓库中还没有提供这个依赖,但是可以通过 Git 的JitPack包仓库来使用它。在第一次请求时,JitPack 会从 Git 仓库下载代码,并构建代码以提供构建制品(artifact),比如 JAR 文件。如果想了解更多信息的话,请参阅 JitPack 的文档。
在制品发布到 Maven Central 仓库之前,我们应该在_pom.xml_中添加如下的 JitPack 仓库:
使用@SpringBootTest注解的测试,以及其他使用SpringExtension类的注解测试,可以使用 @EnableWireMock注解进行标注,该注解会启用WireMockSpringExtension并添加测试上下文定制器。我们可以使用@ConfigureWireMock来配置 mock,它会创建一个WireMockServer,并使用**property
**指定的名称来作为环境属性的名称,这样的环境属性可以用来检索 WireMockServer:
在上述的样例中,我们使用**environment.getProperty("studentservice.url")
方法来检索WireMockServer
**实例的 URL。
WireMock扩展可以通过配置注解中的**extensions
**参数进行配置:
默认情况下,包含映射文件的 classpath 目录会被设置为_wiremock/{server-name}/mappings_,但是也可以通过配置注解中的**stubLocation
**参数进行变更:
相对于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
相关阅读:
Spring Authorization Server 1.0 提供了 OAuth 2.1 和 OpenID Connect 1.0 实现
评论