saritasa / openapi-httpfoundation-testing
通过验证HttpFoundation响应与OpenAPI(3.0.x)定义来强化您的API测试
Requires
- php: ^7.2
- ext-json: *
- league/openapi-psr7-validator: ^0.12.1
- nyholm/psr7: ^1.3
- psr/http-message: ^1.0
- symfony/http-foundation: ^4.4 || ^5.0
- symfony/psr-http-message-bridge: ^2.0
Requires (Dev)
- phpunit/phpunit: >=8.0
- squizlabs/php_codesniffer: ^3.5
This package is auto-updated.
Last update: 2024-09-25 22:48:02 UTC
README
通过验证HttpFoundation响应与OpenAPI(3.0.x)定义来强化您的API测试。
请参阅这篇文章获取更多详细信息,以及这个存储库了解在Laravel项目中使用示例。
为什么?
OpenAPI 是一个旨在以人类和机器都能理解的方式描述RESTful API的规范。
通过将API的响应与描述它的OpenAPI定义进行验证,我们保证API的行为符合我们提供的文档,从而使OpenAPI定义成为唯一的真相来源。
HttpFoundation组件 是作为Symfony框架的一部分开发和维护的。它在像Symfony、Laravel、Drupal等项目中使用,以处理HTTP请求和响应(请参阅扩展列表)。
它是如何工作的?
此包基于 OpenAPI PSR-7 Message Validator 包,它通过OpenAPI定义验证PSR-7消息。
它本质上使用Symfony的 PSR-7 Bridge 和 Tobias Nyholm 的 PSR-7实现 将HttpFoundation响应对象转换为PSR-7消息,然后再将其传递给OpenAPI PSR-7 Message Validator。
安装
通过Composer
$ composer require --dev osteel/openapi-httpfoundation-testing
💡 此包旨在仅用于开发,作为您API测试套件的一部分。
用法
首先,在执行验证的类中导入构建器
use Osteel\OpenApi\Testing\ResponseValidatorBuilder;
使用构建器创建一个 Osteel\OpenApi\Testing\ResponseValidator
对象,并为其提供YAML或JSON OpenAPI定义
$validator = ResponseValidatorBuilder::fromYaml('my-definition.yaml')->getValidator(); // or $validator = ResponseValidatorBuilder::fromJson('my-definition.json')->getValidator();
💡 除了文件,您也可以直接传递YAML或JSON字符串。
现在您可以验证给定 路径 和方法的 Symfony\Component\HttpFoundation\Response
对象
$validator->validate('/users', 'post', $response);
💡 为了方便,也接受实现
Psr\Http\Message\ResponseInterface
的响应。
在上面的例子中,我们检查响应是否符合对/users
路径上POST
请求的OpenAPI定义。
OpenAPI支持的所有HTTP方法(GET
、POST
、PUT
、PATCH
、DELETE
、HEAD
、OPTIONS
和 TRACE
)也都有一个快捷方法,在内部调用 validate
,这意味着上面的行也可以这样写
$validator->post('/users', $response);
validate
方法在成功情况下返回 true
,在出现错误时,会抛出来自底层 OpenAPI PSR-7 消息验证包的 PSR-7 消息相关异常。
变更日志
有关最近更改的更多信息,请参阅发布部分。
测试
$ composer test
贡献
致谢
人员
特别感谢Pavel Batanov对包结构提出的建议。
包
许可证
MIT 许可证(MIT)。有关更多信息,请参阅许可证文件。