从Behat Context类创建Doctrine对象

时间:2015-11-05 13:32:36

标签: symfony doctrine-orm behat

场合

我有一个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课程中访问Doctrine?

2 个答案:

答案 0 :(得分:3)

通过以下方式将内核注入上下文:

Behat2

class FeatureContext extends RawMinkContext implements KernelAwareContext

Behat3

class FeatureContext extends RawMinkContext
{
    use KernelDictionary

然后您可以按如下方式获取实体管理器:

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

答案 1 :(得分:-2)

不确定Behat测试是如何工作的,但是可以将您的类转换为服务并注入实体管理器吗?