Zend framework 采埃孚+;Doctrine2 phpUnit错误:PDOExeption:无法序列化或取消序列化PDO实例

Zend framework 采埃孚+;Doctrine2 phpUnit错误:PDOExeption:无法序列化或取消序列化PDO实例,zend-framework,phpunit,doctrine-orm,Zend Framework,Phpunit,Doctrine Orm,我正在使用DynamicGuys doctrine2集成到zend框架中(https://github.com/dynamicguy/zf1doctrine2). 它可以工作,但是如果我想用phpUnit进行测试,我会得到以下错误: PDOExOption:不能序列化或取消序列化PDO实例 我搜索了一下,发现如果我在这个文件中注释掉第44行: phpUnit可以工作,但是应用程序的其余部分当然不能工作,因为实体管理器不会被返回 关于错误的来源有什么想法吗?这与PHPUnit在每个测试之间备份全局

我正在使用DynamicGuys doctrine2集成到zend框架中(https://github.com/dynamicguy/zf1doctrine2). 它可以工作,但是如果我想用phpUnit进行测试,我会得到以下错误: PDOExOption:不能序列化或取消序列化PDO实例

我搜索了一下,发现如果我在这个文件中注释掉第44行: phpUnit可以工作,但是应用程序的其余部分当然不能工作,因为实体管理器不会被返回


关于错误的来源有什么想法吗?

这与PHPUnit在每个测试之间备份全局和静态属性有关。如果您有一个PDO实例,它将在尝试序列化时中断。我遇到了一个类似的问题,我找不到PDO实例作为全局参数存储在哪里,但在需要的测试中禁用了backupGlobals和backupStaticAttributes为我解决了这个问题

/**
 * Search test.
 *
 * @backupGlobals disabled
 * @backupStaticAttributes disabled
 *
 * @author Steven Rosato
 */
class SearchControllerTest extends \Majisti\Test\TestCase
{
    ...
}

来源:

所以禁用此选项不会以任何方式影响测试?根据我提供的源代码,如果您有影响其他测试的全局变量,则会影响其他测试,但如果您没有使测试依赖于它们的全局变量,则应该可以正常运行。好的,因此我实际上必须在每个测试文件中执行此操作:(您可以将其添加到phpunit配置xml文件中。或者从命令行传递--no globals backup标志