主要观点:
- 应用与另一系统有集成,单元集成测试中需模拟另一系统行为,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) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。