greensight/laravel-openapi-testing

该包已被废弃,不再维护。作者建议使用 ensi/laravel-openapi-testing 包。

0.1.0 2021-08-24 15:20 UTC

This package is auto-updated.

Last update: 2021-10-05 16:26:38 UTC


README

已弃用,请使用 https://github.com/ensi-platform/laravel-openapi-testing 代替

此包基于 osteel/openapi-httpfoundation-testing,并提供 ValidatesAgainstOpenApiSpec 特性

安装

您可以通过 composer 安装此包

composer require greensight/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

安全漏洞

请查看我们如何报告安全漏洞的 安全策略

许可

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