vfunin / laravel-openapi-testing
1.2
2024-06-05 15:02 UTC
Requires
- php: ^8.2
- vfunin/openapi-httpfoundation-testing: ^1.1
Requires (Dev)
- friendsofphp/php-cs-fixer: dev-master
- mockery/mockery: 1.7.x-dev
- orchestra/testbench: 8.x-dev
- pestphp/pest: ^2.23
- php-parallel-lint/php-var-dump-check: dev-master
- phpunit/phpunit: ^10.1
README
此包基于 osteel/openapi-httpfoundation-testing,并提供 ValidatesAgainstOpenApiSpec 特性
安装
您可以通过 composer 安装此包
composer require mib/laravel-openapi-testing
基本用法
让我们根据 oas3 在我们的测试中添加验证。我们需要的只是 use ValidatesAgainstOpenApiSpec; 并实现 getOpenApiDocumentPath(): string 方法,如下所示
class SomeTestCase extends AnotherTestCase { use ValidatesAgainstOpenApiSpec; protected function getOpenApiDocumentPath(): string { return public_path('api-docs/v1/index.yaml'); } }
该特性覆盖了 $this->call 方法以添加所需的验证。因此,所有与 HTTP 相关的辅助方法($this->get()、$this->postJson() 等)都会执行验证。请求和响应都会被验证以匹配给定的规范的一部分。如果验证失败,测试将自动标记为失败,无需任何手动断言。
关闭验证
在某些情况下,您可能想关闭特定请求的验证。以下是如何操作的示例
// Turn off validation for both request $this->skipNextOpenApiRequestValidation()->getJson(...); // Turn off validation for both response $this->skipNextOpenApiResponseValidation()->getJson(...); // Turn off validation for both request and response $this->skipNextOpenApiValidation()->getJson(...);
路径映射
为了验证请求与 oas3 的匹配,该包需要将其映射到规范文档中描述的路径之一。我们使用 Laravel 路由的路径($request->route()->uri)来完成此操作。如果它不完全匹配您的情况,您可以像这样显式设置当前请求的 OpenApi 路径
$this->forceOpenApiPath('/pets/{petId}')->getJson(...);
贡献
有关详细信息,请参阅 CONTRIBUTING
测试
- composer install
- npm i
- composer test