behat/common-contexts

Behat 常用上下文

v1.2.0 2013-04-09 00:51 UTC

This package is auto-updated.

Last update: 2024-08-28 19:03:40 UTC


README

此项目已被弃用。如果您想接管或贡献,请联系 @everzet。

Behat 的额外上下文

这些额外的上下文可以作为您功能套件的子模块使用,直接提供额外的步骤和钩子。

如何使用它们

要使用这些上下文,您只需使用所需的参数实例化它们(见构造函数参数),然后像这样传递给 useContext() 函数

<?php

namespace Acme\DemoBundle\Features\Context;

use Behat\Behat\Context\BehatContext;
use Behat\CommonContexts\SymfonyMailerContext;
use Behat\CommonContexts\DoctrineFixturesContext;

/**
 * Feature context.
 */
class FeatureContext extends BehatContext
{
    public function __construct()
    {
        // To use SymfonyMailerContext in your steps
        $this->useContext('symfony_extra', new SymfonyMailerContext());

        // To use DoctrineFixturesContext in your steps
        $this->useContext('doctrine_fixtures_context', new DoctrineFixturesContext());
    }

    /**
     * Example of using DoctrineFixturesContext in BeforeScenario hook
     *
     * @BeforeScenario
     */
    public function beforeScen()
    {
        $loader = new Loader();

        $this->getMainContext()
            ->getSubcontext('doctrine_fixtures_context')
            ->loadFixtureClasses($loader, array(
                'Acme\Bundle\DefaultBundle\DataFixtures\ORM\LoadNewsData',
                'Acme\Bundle\DefaultBundle\DataFixtures\ORM\LoadPagesData',
                'Acme\Bundle\DefaultBundle\DataFixtures\ORM\LoadReviewData',
                'Acme\Bundle\DefaultBundle\DataFixtures\ORM\LoadTicketData',
            ));

        /** @var $em \Doctrine\ORM\EntityManager */
        $em = $this->kernel->getContainer()->get('doctrine.orm.entity_manager');

        $purger = new ORMPurger();
        $executor = new ORMExecutor($em, $purger);
        $executor->purge();
        $executor->execute($loader->getFixtures(), true);
    }
}

示例:使用 SymfonyDoctrineContext 在 Symfony 框架中重置 Doctrine

数据库模式,在场景开始之前

<?php

namespace Acme\DemoBundle\Features\Context;

use Behat\Behat\Context\BehatContext;
use Behat\CommonContexts\SymfonyDoctrineContext;

/**
 * Feature context.
 */
class FeatureContext extends BehatContext
{
    public function __construct()
    {
        // Connects SymfonyDoctrineContext
        $this->useContext('symfony_doctrine_context',  new SymfonyDoctrineContext);
    }

    /**
     * Clean database before scenario starts
     *
     * @BeforeScenario
     */
    public function beforeScenario($event)
    {
        // Asks subcontext SymfonyDoctrineContext to rebuild database schema
        $this
            ->getMainContext()
            ->getSubcontext('symfony_doctrine_context')
            ->buildSchema($event);
    }
}