Mockery, Codeception 和 Symfony - 无法重新声明类
Posted
技术标签:
【中文标题】Mockery, Codeception 和 Symfony - 无法重新声明类【英文标题】:Mockery, Codeception and Symfony - Cannot redeclare class 【发布时间】:2016-07-09 16:32:23 【问题描述】:我有一个现有单元测试的以下部分(启用了 Mockery 模块):
$mockedEvent = \Mockery::mock('\Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent');
此测试运行良好并且成功,但是一旦 Codeception 使用 Symfony2 模块进行我的功能测试,我就会收到以下错误:
php Fatal error: Cannot declare class Symfony\Component\HttpFoundation\Request, because the name is already in use in /projectDir/var/bootstrap.php.cache on line 365
不知何故,我的单元测试中声明的类导致我的功能测试出现问题,这导致我无法按预期使用 Mockery。如何避免此错误?
【问题讨论】:
请使用 -vvv 标志运行 Codeception 并将完整的堆栈跟踪添加到您的问题中。 【参考方案1】:将 Codeception 升级到 2.2 后,此错误消失。 - 尽管现在 Codeception 在到达功能测试时经常会出现段错误,并且仅在仅运行功能测试(有效)时才能再次工作,然后整个测试套件再次运行良好。根据我的经验,Codeception 总是发生一些奇怪的事情。
【讨论】:
以上是关于Mockery, Codeception 和 Symfony - 无法重新声明类的主要内容,如果未能解决你的问题,请参考以下文章