epfremme / swagger-bundle
Symfony 2 扩展包,用于利用swagger库测试/模拟API合约
Requires
- php: >=5.5
- behat/behat: ~3.0
- behat/mink: ~1.6
- behat/mink-browserkit-driver: ~1.2
- behat/mink-extension: ~2.0
- behat/symfony2-extension: ~2.0
- epfremme/swagger-php: ^1.0
- justinrainbow/json-schema: ^2.0
- symfony/symfony: ^2.0|^3.0
- tebru/realtype: ^0.1.0
Requires (Dev)
- phpunit/phpunit: ~4.1
README
Symfony 2 扩展包,用于利用swagger开发和测试工具
安装
- 需要包
composer require epfremme/swagger-bundle
- 安装包
composer install
注意:此扩展包仅应在开发模式下使用,并作为开发依赖项包含。这些资源旨在帮助在开发过程中创建API symfony应用程序
使用方法
您可以在您的 parameters.yml 中覆盖两个主要的扩展参数
swagger_bundle.swagger_file
默认: Resources/docs/swagger.yaml - 指定swagger文件swagger_bundle.mock_api
默认: true - 开启/关闭以禁用模拟API监听器
更多详细信息请见下方...
Behat 使用方法
Behat 文档: behat
- 将 SwaggerContext 文件添加到您的 behat.yml 配置套件中
Behat 配置示例
使用 SwaggerContext 验证json模式的Behat配置示例
default:
suites:
app:
paths:
- %paths.base%/src/AppBundle/Tests/Features/
contexts:
- Epfremme\SwaggerBundle\Behat\SwaggerContext: ~
extensions:
Behat\Symfony2Extension: ~
Behat\MinkExtension:
sessions:
default:
symfony2: ~
testers:
rerun_cache: .behat_rerun_cache
上下文详细信息
@Given 我有请求负载
接受一个 TableNode,其中包含键值对,用作请求负载
格式:| key | value |
@When 我请求 :path
@When 我使用 :method 方法请求 :path
向API发出请求,带有或不带有请求方法(默认为GET)
@When 我使用 :schema schema
@When 我正在使用 :schema schema
将swagger文档中的swagger定义模式存储为用于验证API JSON响应数据的模式
注意:所使用的swagger文档是在 swagger_bundle.swagger_file
参数中定义的文件
@When 我测试swagger路径 :path
@When 我使用操作 :operation 测试swagger路径 :path
@When 我使用操作 :operation 和响应 :response 测试swagger路径 :path
将swagger文档中的swagger响应模式存储为用于验证API JSON响应数据的模式
注意:所使用的swagger文档是在 swagger_bundle.swagger_file
参数中定义的文件
@Then 响应应该是json
断言响应是json
@Then 响应json应包含键 :key
断言响应json包含 "key"
@Then 响应json键 :key 应等于 :value
断言响应json键等于 "value"
@Then Json响应数据应该是有效的
@Then Json响应键 :key 应该是有效的
根据先前指定的swagger定义或响应模式验证响应数据
模拟API使用方法
可以通过将 swagger_bundle.mock_api
设置为 false 来禁用模拟API。此外,请注意,如果忘记将其移动到 require-dev 或添加到内核的错误区域,监听器将不会在prod模式下运行
- 安装
app/console swagger:install:mock-api
- 向请求添加
x-mock-api
标头以触发监听器并触发模拟响应
资源
一个有用的chrome扩展,用于模拟请求头 Modheader
在swagger.json文档中可以定义的额外方法与选项 chance