İsteğe bağlı olarak ister KernelAwareInterface isterseniz de ContainerAwareInterface kullanabilirsiniz.


FeatureContext implements KernelAwareInterface


namespace Football\TeamBundle\Features\Context;

use Behat\MinkExtension\Context\MinkContext;
use Behat\Symfony2Extension\Context\KernelAwareInterface;
use Symfony\Component\HttpKernel\KernelInterface;

class FeatureContext extends MinkContext implements KernelAwareInterface
{
private $kernel;

public function setKernel(KernelInterface $kernelInterface)
{
$this->kernel = $kernelInterface;
}

/**
* @param string $name
*
* @return object
*/
public function getService($name)
{
return $this->kernel->getContainer()->get($name);
}

/**
* @param string $name
*
* @return mixed
*/
public function getParameter($name)
{
return $this->kernel->getContainer()->getParameter($name);
}

/**
* @param null|string $name
*
* @return EntityManagerInterface
*/
public function getEntityManager($name = null)
{
return $this->kernel->getContainer()->get('doctrine')->getManager($name);
}

/**
* @param null|string $name
*
* @return DocumentManager
*/
public function getDocumentManager($name = 'doctrine_mongodb.odm.default_document_manager')
{
return $this->kernel->getContainer()->get($name);
}
}

FeatureContext implements ContainerAwareInterface


namespace Football\TeamBundle\Features\Context;

use Behat\MinkExtension\Context\MinkContext;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

class FeatureContext extends MinkContext implements ContainerAwareInterface
{
private $container;

public function setContainer(ContainerInterface $container = null)
{
$this->container = $container;
}

/**
* @param string $name
*
* @return object
*/
public function getService($name)
{
return $this->container->get($name);
}

/**
* @param string $name
*
* @return mixed
*/
public function getParameter($name)
{
return $this->container->getParameter($name);
}

/**
* @param null|string $name
*
* @return EntityManagerInterface
*/
public function getEntityManager($name = null)
{
return $this->container->get('doctrine')->getManager($name);
}

/**
* @param null|string $name
*
* @return DocumentManager
*/
public function getDocumentManager($name = 'doctrine_mongodb.odm.default_document_manager')
{
return $this->container->get($name);
}
}

Eğer birden fazla context dosyası kullanıyorsanız, yukarıda tanımlanan public methodlara aşağıdaki gibi ulaşabilirsiniz.


/** @var FeatureContext $mainContext */
$mainContext = $this->getMainContext();