vfunin/laravel-openapi-testing

1.2 2024-06-05 15:02 UTC

This package is auto-updated.

Last update: 2024-09-05 16:54:13 UTC


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

测试

  1. composer install
  2. npm i
  3. composer test