💡
原文英文,约1000词,阅读约需4分钟。
📝
内容提要
在Chili Piper,我们通过OpenAPI Codegen和TypeScript进行合同测试,以解决前后端不同步的问题。我们记录当前部署版本,动态生成API客户端,并在TypeScript中验证合同。尽管计算开销较大,但通过优化措施如跳过无破坏性更改的检查和缓存依赖项,显著提升了性能。合同测试有助于识别使用已弃用端点的应用,确保及时部署。
🎯
关键要点
- Chili Piper面临前后端不同步的问题,使用OpenAPI Codegen和TypeScript进行合同测试。
- 通过记录当前部署版本和动态生成API客户端,确保前后端保持强类型合同。
- 合同测试有助于及时识别使用已弃用端点的应用,避免运行时故障。
- 设置合同测试需要存储每个服务的当前部署版本,使用YAML文件进行管理。
- 实现合同测试的步骤包括检测已部署版本、动态生成API客户端、检出前端版本、覆盖API客户端和运行TypeScript检查。
- 尽管计算开销较大,通过跳过无破坏性更改的检查和缓存依赖项等优化措施显著提升性能。
- 使用TypeScript项目引用和增量模式可以重用先前构建的代码,进一步提高构建速度。
- 合同测试能够识别哪些应用仍在使用已弃用的端点,并确定需要一起部署的应用。
- 为处理TypeScript项目引用中的假阳性,创建了一个小包装器来抑制未使用文件的错误。
- 结合OpenAPI Codegen、TypeScript和合同测试,建立了一个强大的解决方案以检测破坏性API更改。
❓
延伸问答
如何使用TypeScript和OpenAPI Codegen进行合同测试?
通过记录当前部署版本、动态生成API客户端、检出前端版本、覆盖API客户端并运行TypeScript检查来实施合同测试。
合同测试的主要好处是什么?
合同测试可以识别使用已弃用端点的应用,并确保需要一起部署的应用得到及时识别。
在进行合同测试时如何优化性能?
通过跳过无破坏性更改的检查、缓存依赖项和使用增量模式等措施来优化性能。
为什么选择合同测试而不是仅依赖openapi-diff?
合同测试可以明确识别受影响的前端应用,而openapi-diff无法提供此信息。
如何处理TypeScript项目引用中的假阳性问题?
创建一个小包装器来抑制未使用文件的错误,确保只有相关问题导致测试失败。
合同测试的设置是否复杂?
虽然设置合同测试的过程较为复杂,但一旦完成后可以维护得相对轻松。
➡️