在 Spring Boot Rest 中测试端点是否符合 openapi 合约

问题描述 投票:0回答:1

我正在寻找一种编写测试的好方法,以确保 Spring Boot Rest(版本 2.1.9)应用程序中的端点遵循 OpenAPI 合约中的合约。

在我最近搬的项目中,有以下工作流程:架构师编写合约 openapi.yml,开发人员必须实现端点以遵守合约。不幸的是,发生了很多差异,这个测试必须捕获这种情况,并且不可能改变这一点。

我正在考虑一种从当前端点生成 openapi.yml 的解决方案,并将其与它应该遵循的 OpenAPI 合约进行比较。我想知道是否有一些开箱即用的解决方案。

spring-boot spring-rest openapi
1个回答
1
投票

我正在考虑从当前 ednpoints 生成 openapi.yml 的解决方案,并以某种方式进行比较,但想知道是否有一些开箱即用的解决方案。

在一般情况下,即使生成的规范也可能与实际的应用程序行为不匹配,因为有些东西无法用 Open API 表达。然而,作为一个起点,它仍然会有所帮助。

开放API提供了一种“指定示例”的方法,可用于验证合约。但实际的模式可能是更好的期望来源。 我想指出两个可以仅根据输入的开放 API 规范生成和执行测试用例的工具:

    Schemathesis
  1. 同时使用示例和模式,默认情况下不需要配置。它利用基于属性的测试并验证测试模式中定义的属性 - 响应代码、模式和标头。它支持开放 API 2 和 3。
  2. Dredd
  3. 更注重示例并提供了一些自动期望。它仅支持 Open API 2,第三个版本是实验性
  4. 两者都提供 CLI,并且可以通过各种挂钩进行扩展以适应所需的工作流程。

我建议将合同(作为您提到的规范)传递给 Schemathesis,它将验证您的应用程序是否正确处理所有模式和示例。

© www.soinside.com 2019 - 2024. All rights reserved.