saritasa/openapi-httpfoundation-testing

此包已被废弃且不再维护。未建议替代包。

通过验证HttpFoundation响应与OpenAPI(3.0.x)定义来强化您的API测试

1.0.1 2021-01-25 14:55 UTC

This package is auto-updated.

Last update: 2024-09-25 22:48:02 UTC


README

Latest Stable Version License Build Status Scrutinizer Code Quality

通过验证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 BridgeTobias NyholmPSR-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方法(GETPOSTPUTPATCHDELETEHEADOPTIONSTRACE)也都有一个快捷方法,在内部调用 validate,这意味着上面的行也可以这样写

$validator->post('/users', $response);

validate 方法在成功情况下返回 true,在出现错误时,会抛出来自底层 OpenAPI PSR-7 消息验证包的 PSR-7 消息相关异常

变更日志

有关最近更改的更多信息,请参阅发布部分

测试

$ composer test

贡献

有关详细信息,请参阅贡献指南行为准则

致谢

人员

特别感谢Pavel Batanov对包结构提出的建议。

许可证

MIT 许可证(MIT)。有关更多信息,请参阅许可证文件