gong023/swagger-assert

能够断言swagger文档中的键和API响应

dev-master 2015-04-09 01:35 UTC

This package is auto-updated.

Last update: 2024-08-27 20:37:50 UTC


README

能够断言swagger 1.2文档键和API响应。对于Swagger 2,请查看 SwaggerAssertions

Build Status Coverage Status

安装

composer

    "require-dev": {
        "gong023/swagger-assert": "dev-master"
    }

需要PHP5.4+

使用方法

示例API

以下是一个示例API。Swagger-assert使您能够断言/plain响应具有swagger键idname

/**
 * @SWG\Resource(
 *     resourcePath="plain",
 *     @SWG\Api(
 *         path="/plain",
 *         description="plain api structure",
 *         @SWG\Operation(
 *             method="GET",type="SimpleMember",nickname="plain"
 *         )
 *     )
 * )
 *
 * @SWG\Model(
 *     id="SimpleMember",
 *     @SWG\Property(name="id", type="integer", required=true, description="user id"),
 *     @SWG\Property(name="name", type="string", required=true, description="user name")
 * )
 */
$app->get('/plain', function () use ($app) {
    $response = [
        'id'   => 0,
        'name' => 'kohsaka'
    ];

    return $app->json($response);
});

准备就绪

首先,在测试开始时调用SwaggerAssert::analyze。参数是存在注解文件的目录路径。

// testing bootstrap.php
\SwaggerAssert\SwaggerAssert::analyze($targetDir);

断言键

其次,在测试类中调用SwaggerAssert::responseHasSwaggerKeys

  • 第一个参数:API响应数组
  • 第二个参数:http方法字符串
  • 第三个参数:API端点URL

当使用PHPUnit测试示例API时,代码如下。

use SwaggerAssert\SwaggerAssert;

class PlainApiTest extends \PHPUnit_Framework_TestCase
{
    public function testResponseHasSwaggerKeys()
    {
        $response = $this->request('get', '/plain');
        $result = SwaggerAssert::responseHasSwaggerKeys(array $response, 'get', '/plain', $onlyRequired = true);

        $this->assertTrue($result);
    }
}

SwaggerAssert::responseHasSwaggerKeys比较API响应键和swagger文档中的键,如果匹配则返回true。如果它们不同,则输出以下错误消息。

SwaggerAssert\Exception\CompareException: Failed asserting that API response and swagger document are equal.
--- Response
+++ Swagger
@@ @@
 Array (
-    0 => 'id'
-    1 => 'name'
+    0 => 'name'
 )

第四个参数是可选的。如果您提供false,则responseHasSwaggerKeys包含required=false的键以进行断言。默认值是true。

如果您需要更多示例,请查看swagger-assert-sandbox

动机

Swagger文档和API响应有时会有所不同。如果它们不同,Swagger文档会在开发中引起混淆。因此,创建库以断言API响应和Swagger文档。

错误 & 贡献

请通过打开问题来报告错误。

欢迎贡献。