nodeone / behat-common-contexts
Behat 常用上下文
v2.0.0
2018-07-25 08:28 UTC
Requires
- php: >=5.3.1
- behat/behat: ~3.3
- phpunit/phpunit: ~6.0
Suggests
This package is not auto-updated.
Last update: 2024-09-15 05:23:10 UTC
README
这是 Behat/CommonContexts 的分支
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); } }