pion/laravel-swagger-test

使用Laravel的底层请求测试功能测试您的路由,无需实际发送请求即可对您的API模式进行测试。

dev-master 2021-02-04 16:33 UTC

This package is auto-updated.

Last update: 2024-09-05 00:25:22 UTC


README

底层逻辑使用了来自byjgPHP Swagger Test

使用Laravel的底层请求测试功能测试您的路由,无需实际发送请求即可对您的API模式进行测试。

支持

有关如何进行测试以及支持哪些OpenAPI,请查看PHP Swagger Test

在撰写此README时,部分支持OpenAPI 3。

安装

  1. 为php-swagger-test添加一个自定义仓库,包含内部改进。(在未来可能合并)。

    "repositories": [
        {
            "type": "git",
            "url": "https://github.com/pionl/php-swagger-test"
        }
    ]
    
  2. 要求包

    compsoer require pion/laravel-swagger-test
    

用法

使用Laravel的TestCase,并使用AssertRequestAgainstSchema特性和断言请求与模式。

使用与ApiRequester相同的"请求构建"。更多详细信息请查看PHP Swagger Test

use Tests\TestCase;
use ByJG\ApiTools\AssertRequestAgainstSchema;
use ByJG\ApiTools\Base\Schema;
use ByJG\ApiTools\Laravel\LaravelRequester;

class GetUsersTest extends TestCase
{
   use AssertRequestAgainstSchema;
   
   /**
    * Loaded schema for phpunit instance.
    *
    * @var Schema|null
    */
   public static $cachedSchema = null;

   protected function setUp()
   {
       parent::setUp();

       // Load only once, must be made in setup to be able to use base_path
       if (null !== $this->schema) {
           return;
       }

       // Load only once per phpunit instance
       if (null === self::$cachedSchema) {
           self::$cachedSchema = Schema::getInstance(file_get_contents(base_path('docs/api.json')));
       }

       // Set the schema
       $this->setSchema(self::$cachedSchema);
   }

   public function testGetUsersWithoutFiltersInElasticSearchAgainstSchema()
   {
       // Create data
       $this->createUser();

       $request = new LaravelRequester($this);
       $request
           ->withMethod('GET')
           ->withPath('/v1/users');

       $this->assertRequest($request);
   }
}