情况
我有一个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测试是如何工作的,但是否可以将您的类转换为服务并注入实体管理器?