从 Behat 上下文创建 Doctrine 对象 class
Creating Doctrine objects from a Behat Context class
情况
我有一个 Symfony2 项目。我想在 Behat 测试期间创建 Doctrine 对象。为此,我需要从 FeatureContext
class.
中访问 EntityManager
我的尝试
我有我的 FeatureContext
class 扩展 RawMinkContext
,它又扩展了 BehatContext
。
然后我尝试按照 the documentation 访问容器或实体管理器。
class FeatureContext extends RawMinkContext
{
/**
* @Given /^I have some disciplines$/
*/
public function iHaveSomeDisciplines()
{
$em = $this->getEntityManager();
$container = $this->getContainer();
}
但是这些都不起作用,因为 none 的 classes FeatureContext 继承自可以访问它。据我所知,只有 Controller
可以。
问题
如何从我的 FooContext
classes 中访问 Doctrine?
不确定 Behat 测试如何工作,但是否可以将您的 class 变成服务并注入实体管理器?
通过以下方式将内核注入到您的上下文中:
Behat2
class FeatureContext extends RawMinkContext implements KernelAwareContext
Behat3
class FeatureContext extends RawMinkContext
{
use KernelDictionary
然后可以如下获取实体管理器:
$this->getKernel()->getContainer()->get('doctrine.orm.entity_manager');
情况
我有一个 Symfony2 项目。我想在 Behat 测试期间创建 Doctrine 对象。为此,我需要从 FeatureContext
class.
我的尝试
我有我的 FeatureContext
class 扩展 RawMinkContext
,它又扩展了 BehatContext
。
然后我尝试按照 the documentation 访问容器或实体管理器。
class FeatureContext extends RawMinkContext
{
/**
* @Given /^I have some disciplines$/
*/
public function iHaveSomeDisciplines()
{
$em = $this->getEntityManager();
$container = $this->getContainer();
}
但是这些都不起作用,因为 none 的 classes FeatureContext 继承自可以访问它。据我所知,只有 Controller
可以。
问题
如何从我的 FooContext
classes 中访问 Doctrine?
不确定 Behat 测试如何工作,但是否可以将您的 class 变成服务并注入实体管理器?
通过以下方式将内核注入到您的上下文中:
Behat2
class FeatureContext extends RawMinkContext implements KernelAwareContext
Behat3
class FeatureContext extends RawMinkContext
{
use KernelDictionary
然后可以如下获取实体管理器:
$this->getKernel()->getContainer()->get('doctrine.orm.entity_manager');