rezzza/rest-api-behat-extension

此软件包已废弃且不再维护。作者建议使用ubirak/rest-api-behat-extension软件包。

Alice扩展用于Behat

安装量: 85,090

依赖关系: 3

建议者: 0

安全性: 0

星标: 34

关注者: 7

分支: 13

开放问题: 4

类型:behat-extension

v3.0.1 2019-06-20 08:31 UTC

README

使AliceBehat一起工作。

您可以通过yaml文件和Behat步骤导入测试数据。

版本

  • 1.0.x版本,适用于Behat 3.x: 构建状态
  • 0.1.x版本,适用于Behat 2.5.x

安装

通过Composer

    $ composer require --dev "rezzza/alice-extension:1.0.*@dev"

配置您的behat.yml

default:
    extensions:
        Rezzza\AliceExtension\Extension:
            fixtures: /path/to/your/fixtures.yml
            lifetime: (scenario|feature)
            faker:
                locale: en_US #default
                providers: []

要编写您的fixtures.yml,请参阅Alice文档

此扩展需要Symfony2Extension才能工作。请参阅其文档

用法

在您的Behat配置中,您可以为所需的测试套件激活AliceContext

default:
    suites:
        default:
            contexts:
                - Rezzza\AliceExtension\Context\AliceContext

因此,您现在可以在特征中编写

Feature: Test My feature

    Background: Write fixtures
        Given I load "Vendor\My\Entity" fixtures where column "key" is the key:
            | key      | id | name |
            | fixture1 | 1  | jean |
            | fixture2 | 2  | marc |

如果您使用yaml文件,您应该考虑使用模板继承将默认值放入其中。

并使用内联测试数据覆盖您需要的值。

特定实体的钩子

有时您需要为持久化对象应用特定操作。您可以通过此扩展包含的Symfony2 Bundle来完成此操作。

激活包

<?php
/***/
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            /***/
            new Rezzza\AliceExtension\Symfony\Bundle\RezzzaAliceExtensionBundle()
            /***/
        );
    }
}
?>

然后,在您的Symfony2应用程序中,您将能够通过服务构建一些Alice处理器。它应该扩展Nelmio\Alice\ProcessorInterface并通过标签alice_extension.processor注册。

适配器

目前我们支持

  • DoctrineORM
  • ElasticSearch(通过FOSElasticaBundle)
default:
    extensions:
        Rezzza\AliceExtension\Extension:
            adapters:
                elastica: ~
                orm: ~

对于ElasticSearch,我们应该使用mapping配置来指示alice应使用哪种ElasticSearch类型来持久化您的模式

default:
    extensions:
        Rezzza\AliceExtension\Extension:
            adapters:
                elastica:
                    index_service: fos_elastica.index.name_of_your_index
                    mapping:
                        myType: My\Fully\Model
                orm: ~

然后在您的特征中,您应该使用标签来指定alice应使用哪种适配器

@alice:elastica
Feature: Test My feature

    Background: Write fixtures
        Given I load "Vendor\My\Entity" fixtures where column "key" is the key:
            | key      | id | name |
            | fixture1 | 1  | jean |
            | fixture2 | 2  | marc |

高级测试数据

可以通过配置管理测试数据。

default:
    extensions:
        Rezzza\AliceExtension\Extension:
            default_loading: implicit
            fixtures:
                default: [users, products] # could be scalar if you want only one => users
                key_paths:
                    users: /src/path/to/your/fixtures.yml
                    products: /src/path/to/your/fixtures.yml

在这种配置下,当你调用下面的步骤时,它将加载默认的固定值(在这个例子中是用户产品)。这里的default_loading键非常重要,如果将其定义为implicit,则在使用下面的步骤时将隐式加载默认的固定值。如果定义为explicit,你必须使用Given 我加载 "default" 固定值来加载默认的固定值。

Given I load "Acme\Bundle\Entity\User" fixtures where column "key" is the key:
    | key                  | emailAddress     | password |
    | user1 (extends user) | chuck@norris.com | password |

你可以手动加载固定值。

Given I load "default" fixtures   # will load users AND products
Given I load "users" fixtures     # will load users
Given I load "products" fixtures  # will load products

当然,固定值只会加载一次。

固定值提供者

一些提供者在AliceExtension上可用。

  • NullProvider: <null>
  • FixedDateTimeProvider: <fixedDateTime("+1 hour")>

你可以在behat.yml配置中轻松添加它们(或你自己的)。

default:
    extensions:
        Rezzza\AliceExtension\Extension:
            .....
            faker:
                locale: en_US #default
                providers:
                    - \Rezzza\AliceExtension\Providers\NullProvider
                    - \Rezzza\AliceExtension\Providers\FixedDateTimeProvider
                    - \Acme\Providers\YourOwnProvider

生命周期

有两种生命周期选项。

  • 场景:在每个场景之后重置固定值。你必须使用背景步骤来描述你的固定值。
  • 功能:在每个功能之后重置固定值。你必须使用场景步骤来描述你的固定值。

常见问题解答

  • 我想用这个与Doctrine ODM一起使用!

  • 你应该做一个PR(Pull Request)。

  • 我想用这个与PostgreSQL一起使用!

  • 你应该做一个PR(Pull Request)。