从Behat Context类创建Doctrine对象



情况

我有一个Symfony2项目。我想在Behat测试中创建条令对象。为此,我需要从FeatureContext类中访问EntityManager。

我的尝试

我有我的FeatureContext类扩展RawMinkContext,它又扩展了BehatContext

然后,根据文档,我尝试访问容器或实体管理器。

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

但这两个都不起作用,因为FeatureContext从中继承的类都没有访问权限。据我所知,只有Controller能做到。

问题

如何从我的FooContext课程中获取条令?

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

Behat2

class FeatureContext extends RawMinkContext implements KernelAwareContext

Behat3

class FeatureContext extends RawMinkContext
{
    use KernelDictionary

然后您可以获得如下实体管理器:

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

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

最新更新