2015-11-05 3 views
1

СитуацияСоздание объектов Doctrine из Behat контекста класса

У меня есть проект Symfony2. Я хочу создать объекты Doctrine во время теста Behat. Для этого мне нужно получить доступ к EntityManager из моего класса FeatureContext.

Моя попытка

У меня есть FeatureContext класс продлить RawMinkContext, который, в свою очередь расширяет BehatContext.

Затем я попытался, согласно the documentation, получить доступ к контейнеру или сущ.

class FeatureContext extends RawMinkContext 
{ 
    /** 
    * @Given /^I have some disciplines$/ 
    */ 
    public function iHaveSomeDisciplines() 
    { 
     $em = $this->getEntityManager(); 
     $container = $this->getContainer(); 
    } 

Но ни одно из них не работает, поскольку ни один из классов, наследуемых наследуемым объектами FeatureContext, не имеет доступа к этому. Насколько я знаю, делает только Controller.

Вопрос

Как я могу получить доступ к Доктрине внутри моих FooContext классов?

ответ

3

Инжектируйте ядро ​​в вашем контексте по:

Behat2

class FeatureContext extends RawMinkContext implements KernelAwareContext 

Behat3

class FeatureContext extends RawMinkContext 
{ 
    use KernelDictionary 

Тогда вы можете получить диспетчер сущностей следующим образом:

$this->getKernel()->getContainer()->get('doctrine.orm.entity_manager'); 
-2

Не знаете, как работают тесты Behat, но можно ли превратить свой класс в службу и внедрить менеджера сущностей?

+0

Я не Не думаю, потому что у меня нет никакого контроля когда класс Context создается. Это все сделано в фоновом режиме. – Alec

Смежные вопросы