2015-11-05 63 views
1

形勢創建從貝哈特Context類

Doctrine對象我有一個Symfony2的項目。我想在Behat測試期間創建Doctrine對象。爲此,我需要從我的FeatureContext類中訪問EntityManager。

我嘗試

我有我的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