tunezilla/openapi-test-validation
Composer 安装命令:
composer require tunezilla/openapi-test-validation
包简介
Easy OpenAPI Validation for Laravel tests
README 文档
README
This package allows you to perform OpenAPI request and response validation in Laravel tests while using
the normal $this->get(), $this->json(), and $this->call() functions from the MakesHttpRequests trait.
This package does not currently have a Laravel version restriction. It is tested with Laravel 8.
Installation
composer require --dev tunezilla/openapi-test-validation
Gotchas
The response body is consumed using symfony/psr-http-message-bridge in order to validate that it matches the OpenAPI schema.
If you're testing responses that only send content once (like a Symfony StreamedResponse) but try to retrieve this content in your test: OpenAPI validation has already occurred, the content has already been read, and you will receive an empty body.
Regular non-streamed responses are not affected by this issue.
Usage
- Add the
MakesOpenAPIRequeststrait to yourTestCase - Before sending a request, call
$this->openAPI('./path/to/your/openapi.yaml')(chainable)
Single Schema
<?php namespace Tests\Feature; use TuneZilla\OpenAPITestValidation\MakesOpenAPIRequests; use Tests\TestCase; class ExampleTest extends TestCase { use MakesOpenAPIRequests; public function testShow() { $this->openAPI(resource_path('openapi.yaml')) ->json('GET', '/api/settings') ->assertSuccessful(); } }
Setup Once
<?php namespace Tests\Feature; use TuneZilla\OpenAPITestValidation\MakesOpenAPIRequests; use Tests\TestCase; class ExampleTest extends TestCase { use MakesOpenAPIRequests; public function setUp() { parent::setUp(); // if all requests in this testcase use the same schema, you can configure it once in `setUp` // see https://phpunit.readthedocs.io/en/9.3/fixtures.html for information about `setUp` $this->openAPI(resource_path('openapi.yaml')); } public function testShow() { $this->json('GET', '/api/settings') ->assertSuccessful(); } }
Multiple Schemas
<?php namespace Tests\Feature; use TuneZilla\OpenAPITestValidation\MakesOpenAPIRequests; use Tests\TestCase; class ExampleTest extends TestCase { use MakesOpenAPIRequests; public function testShow() { // if your requests use different schemas, you can configure them as needed // this one uses settings/openapi.yaml $this->openAPI(resource_path('settings/openapi.yaml')) ->json('GET', '/api/settings') ->assertSuccessful(); // this one uses other/openapi.yaml $this->openAPI(resource_path('other/openapi.yaml')) ->json('GET', '/api/other') ->assertSuccessful(); } }
Sending Invalid Request
<?php namespace Tests\Feature; use TuneZilla\OpenAPITestValidation\MakesOpenAPIRequests; use Tests\TestCase; class ExampleTest extends TestCase { use MakesOpenAPIRequests; public function testInvalidRequest() { // you can use `ignoreNextOpenAPIRequest` to allow invalid requests to pass through to your backend. // this is useful if you're making sure 422 validation errors are thrown: $this->openAPI(resource_path('openapi.yaml')) ->ignoreNextOpenAPIRequest() ->json('GET', '/api/settings?invalid-param=12345') ->assertJsonValidationError(['invalid-param']); } }
tunezilla/openapi-test-validation 适用场景与选型建议
tunezilla/openapi-test-validation 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 10.28k 次下载、GitHub Stars 达 3, 最近一次更新时间为 2021 年 05 月 04 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「laravel」 「openapi」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 tunezilla/openapi-test-validation 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 tunezilla/openapi-test-validation 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 tunezilla/openapi-test-validation 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
The following pages give you some general information on how to use our APIs.<br/>The actual API services documentation then follows further below. You can use the menu to jump between API sections.<br/><br/>This page has a built-in HTTP(S) client, so you can test the services directly from within t
Alfabank REST API integration
Apollo - OpenAPI
Twitter API v2 available endpoints
Laravel package for Accurate Online API integration.
Shared RCX Laravel DataTables UI and configuration helpers.
统计信息
- 总下载量: 10.28k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 15
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-05-04