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