gong023 / swagger-assert
能够断言swagger文档中的键和API响应
dev-master
2015-04-09 01:35 UTC
Requires
- php: >=5.4.0
- sebastian/comparator: ~1.1
- zircote/swagger-php: 0.9.*
Requires (Dev)
- phpunit/phpunit: ~4.0
- satooshi/php-coveralls: dev-master
This package is auto-updated.
Last update: 2024-08-27 20:37:50 UTC
README
能够断言swagger 1.2文档键和API响应。对于Swagger 2,请查看 SwaggerAssertions
安装
composer
"require-dev": { "gong023/swagger-assert": "dev-master" }
需要PHP5.4+
使用方法
示例API
以下是一个示例API。Swagger-assert使您能够断言/plain响应具有swagger键id、name。
/** * @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文档。
错误 & 贡献
请通过打开问题来报告错误。
欢迎贡献。