2015-11-05 37 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