vincentchalamon / api-extension
此包已被 弃用 且不再维护。未建议替代包。
API Platform 的 Behat 扩展
1.0.0-beta.4
2018-11-14 22:53 UTC
Requires
- php: >=7.0
- api-platform/core: ^2.2
- behat/behat: ^3.4.3
- behat/mink-extension: ^2.3
- behat/symfony2-extension: ^2.1.4
- behatch/contexts: ^3.0
- doctrine/common: ^2.7
- doctrine/doctrine-cache-bundle: ^1.3.1
- doctrine/orm: ^2.5
- fzaninotto/faker: ^1.7
- psr/container: ^1.0
- symfony/config: ^3.4 || ^4.0
- symfony/dependency-injection: ^3.4 || ^4.0
- symfony/doctrine-bridge: ^2.8 || ^3.0 || ^4.0
- symfony/http-kernel: ^3.4 || ^4.0
- symfony/property-info: ^3.4 || ^4.0
- symfony/validator: ^3.4 || ^4.0
Requires (Dev)
- behat/mink-browserkit-driver: ^1.3
- doctrine/data-fixtures: ^1.2
- doctrine/doctrine-bundle: ^1.8
- friendsofphp/php-cs-fixer: ^2.10
- phpstan/phpstan: ^0.9
- phpunit/phpunit: ^4.5 || ^5.0 || ^6.0 || ^7.0
- symfony/asset: ^3.4 || ^4.0
- symfony/dom-crawler: ^3.0
- symfony/framework-bundle: ^3.4 || ^4.0
- symfony/twig-bundle: ^3.4 || ^4.0
This package is auto-updated.
Last update: 2020-06-02 09:51:43 UTC
README
此 Behat 扩展需要以下扩展,请检查其文档以了解安装和用法
此扩展仅作为编写某些步骤的快捷方式,它不会替换您的自定义步骤。 例如,如果您想测试更新用户会更新其密码,您仍然需要添加一个自定义步骤,例如 并且用户密码已成功更新
。
安装
composer require --dev vincentchalamon/api-extension
在 Behat 配置中声明所需扩展
# behat.yml.dist default: # ... suites: default: contexts: - Behat\MinkExtension\Context\MinkContext - Behatch\Context\RestContext - Behatch\Context\JsonContext - ApiExtension\Context\ApiContext - ApiExtension\Context\FixturesContext extensions: Behat\Symfony2Extension: kernel: bootstrap: features/bootstrap/bootstrap.php class: App\Kernel Behat\MinkExtension: base_url: 'http://www.example.com/' sessions: default: symfony2: ~ Behatch\Extension: ~ # ... ApiExtension: ~
使用自定义猜解器为 populator
# behat.yml.dist default: # ... extensions: # ... ApiExtension: guessers: - App\Populator\Guesser\AcustomGuesser - App\Populator\Guesser\AnotherCustomGuesser
与 Symfony FrameworkBundle < 4.1 的使用
在 Symfony FrameworkBundle < 4.1 中运行时,需要覆盖一些私有服务
# config/services_test.yaml # Hack for Behat: allow to inject some private services services: test.property_info: parent: property_info public: true test.api_platform.metadata.resource.metadata_factory.annotation: parent: api_platform.metadata.resource.metadata_factory.annotation public: true test.api_platform.iri_converter: parent: api_platform.iri_converter public: true test.annotation_reader: parent: annotation_reader public: true test.router: parent: router public: true
# behat.yml.dist default: # ... extensions: # ... ApiExtension: services: metadataFactory: '@test.api_platform.metadata.resource.metadata_factory.annotation' iriConverter: '@test.api_platform.iri_converter' registry: '@doctrine' propertyInfo: '@test.property_info' annotationReader: '@test.annotation_reader' router: '@test.router'
使用
FixturesContext 提供以下步骤
以下 <name>
有 <nb> <name>
有一个 <name>
有一个 <name>
有 <nb> <name>
有 <name>
有 <nb> <name> 且
ApiContext 提供以下步骤
我得到一个 <name> 列表
我得到一个通过 <filter> 过滤的 <name> 列表
我得到一个按 <filter> 排序的 <name> 列表
我创建一个 <name>
我创建一个 <name>
我使用组 <serialization-group> 创建一个 <name>
我使用组 <serialization-groups> 创建一个 <name>
我使用组 <serialization-group> 创建一个 <name>
我使用组 <serialization-groups> 创建一个 <name>
我创建一个带有 <name> 的 <name>
我创建一个带有 <name> 的 <name>
我使用组 <serialization-group> 并带有 <name> 创建一个 <name>
我使用组 <serialization-groups> 并带有 <name> 创建一个 <name>
我使用组 <serialization-group> 并带有 <name> 创建一个 <name>
我使用组 <serialization-groups> 并带有 <name> 创建一个 <name>
我得到一个 <name>
我得到一个 <name>
我得到 <name> <value>
我删除一个 <name>
我删除一个 <name>
我删除 <name> <value>
我更新一个 <name>
我更新一个 <name>
我更新 <name> <value>
我更新一个带有 <name> 的 <name>
我更新一个带有 <name> 的 <name>
我更新 <name> <value> 并带有
请求无效
<name> 未找到
方法不允许
我看到一个 <name>
我看到一个 <name>
我看到一个 <name> 列表
我看到 <nb> <name> 列表
我没有看到任何 <name>
打印 <name> 列表的 JSON 模式
打印 <name> 项目的 JSON 模式
打印最后的 JSON 请求
示例
Feature: Using API-Platform, I can get, create, update & delete beers. Scenario: I can get a list of beers Given there are beers When I get a list of beers Then I see a list of beers Scenario: I can get a list of beers filtered by name Given there are beers When I get a list of beers filtered by name=Chouffe Then I don't see any beer Scenario: I can create a beer When I create a beer Then I see a beer Scenario: I can create a beer When I create a beer with: | name | | Chouffe | Then I see a beer Scenario: I can update a beer Given there is a beer When I update a beer Then I see a beer Scenario: I can update a beer and fill its new name Given there is a beer When I update a beer with: | name | | Chouffe | Then I see a beer Scenario: I can update a beer by its name Given the following beer: | name | | Chouffe | When I update the beer Chouffe Then I see a beer Scenario: I can update a beer by its name and fill its new name Given the following beer: | name | | Chouffe | When I update the beer Chouffe with: | name | | Kwak | Then I see a beer Scenario: I can get a beer Given there is a beer When I get a beer Then I see a beer Scenario: I can get a beer by its name Given the following beer: | name | | Chouffe | When I get the beer Chouffe Then I see a beer Scenario: I cannot get a non-existing beer When I get a beer Then the beer is not found Scenario: I can delete a beer Given there is a beer When I delete a beer Then the beer has been successfully deleted Scenario: I can delete a beer by its name Given the following beer: | name | | Chouffe | When I delete the beer Chouffe Then the beer has been successfully deleted
添加 faker 提供程序
要使用来自 fzaninotto/Faker 的自定义 faker 提供器,请按照以下方式更新您的 Behat 配置:
# behat.yml.dist default: # ... extensions: # ... ApiExtension: # ... providers: - App\Faker\Provider\MiscellaneousProvider