使用 WireMock 和 Spring Boot 测试 Java 应用程序

主要观点:

  • 应用与另一系统有集成,单元集成测试中需模拟另一系统行为,WireMock 可帮助实现。
  • 介绍了基本的测试前提和所需知识,以 LangChain4j 与 LMStudio 集成的 Spring Boot 应用为例进行测试。
  • 展示了使用@WebMvcTest@MockBean进行简单测试的方法及存在的问题,以及使用 WireMock 进行更全面测试的步骤,包括添加依赖、配置测试环境、 stub 请求和响应、处理请求匹配和流式响应等。

关键信息:

  • 测试前提:基本 Java 知识、Spring Boot 知识、LangChain4j 知识、LMStudio 知识。
  • 应用创建:使用 LangChain4j 创建与 LMStudio 通信的 Spring Boot 应用,添加相关依赖和配置。
  • 简单测试:使用@WebMvcTest@MockBean测试控制器,存在测试范围受限的问题。
  • WireMock 测试:添加wiremock-spring-boot依赖,配置@SpringBootTest@EnableWireMock等,通过 stubFor 方法 stub 请求和响应,可处理请求匹配和流式响应等。

重要细节:

  • 依赖添加:在 pom.xml 中添加wiremock-spring-boot依赖,范围为test
  • 测试环境配置:@SpringBootTest设置webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT@EnableWireMock启用 WireMock,@TestPropertySource覆盖 LMStudio URL。
  • stub 请求和响应:使用stubFor方法 stub 请求,通过willReturn设置响应,可使用okJson简化,响应体可从文件读取。
  • 请求匹配:通过withRequestBodymatchingJsonPath进行请求匹配。
  • 流式响应:使用WebTestClient发送和接收流式响应,使用StepVerifier验证流式数据。
阅读 269
0 条评论