主要观点:
- 应用与另一系统有集成,单元集成测试中需模拟另一系统行为,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简化,响应体可从文件读取。 - 请求匹配:通过
withRequestBody和matchingJsonPath进行请求匹配。 - 流式响应:使用
WebTestClient发送和接收流式响应,使用StepVerifier验证流式数据。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。