Doctrine orm 奇怪的第2条原则与PHPUnit的行为

Doctrine orm 奇怪的第2条原则与PHPUnit的行为,doctrine-orm,phpunit,Doctrine Orm,Phpunit,我正试图用条令2 ORM设置我的PHPUnit测试。然而,我发现了一些奇怪的问题,我只能假设这些问题归结于某种缓存(从理论上讲),我不知道如何克服这些问题。这就是我得到的: 设置功能: public function setUp() { $front = Zend_Controller_Front::getInstance(); $bootstrap = $front->getParam("bootstrap"); if(!$boostrap) {

我正试图用条令2 ORM设置我的PHPUnit测试。然而,我发现了一些奇怪的问题,我只能假设这些问题归结于某种缓存(从理论上讲),我不知道如何克服这些问题。这就是我得到的:

设置功能:

public function setUp() 
{
    $front = Zend_Controller_Front::getInstance();
    $bootstrap = $front->getParam("bootstrap");

    if(!$boostrap) {
        $application = Zend_Registry::get("application");
        $bootstrap = $application->getBootstrap();
    }
    $bootstrap->bootstrap('doctrine');

    $this->em   = $bootstrap->getResource('doctrine');
    $tool       = new \Doctrine\ORM\Tools\SchemaTool($this->em);
    $classes    = $this->em->getMetaDataFactory()->getAllMetaData();

    $tool->dropSchema($classes);
    $tool->createSchema($classes);

    parent::setUp();
}
这基本上是为了在每次测试中重置条令实例。我还没有一个tearDown()函数,因为目前它负责重置模式,如图所示。我应该在这里提到我正在使用SQLite

我在一个类中尝试运行两个测试,没有依赖项。第一个测试插入如下记录:

$value = 5;
$model = new Model();
$model->setUserId($rater->getId());
$model->setValue($value);

$this->em->persist($model);
$this->em->flush();
到目前为止,一切顺利。我在数据库中有一个值为5的新记录

进入下一个测试。这次我想跑:

$value = 3;
$model = new Model();
$model->setUserId($rater->getId());
$model->setValue($value);

$this->em->persist($model);
$this->em->flush();
从相关表格中转储所有记录会给我一个结果;值再次为5的记录。换句话说,第二个测试是从第一个测试中获取$value。 在第二次测试开始时,我通过转储所有记录进行了双重检查,但没有返回任何结果。在我不知道的某个地方,条令中似乎存在一些缓存问题

我尝试过清除各种我知道Dority可以确保的缓存,例如:

$cacheDriver = new \Doctrine\Common\Cache\XcacheCache();
$cacheDriver->deleteAll();
有人能给我提些别的建议吗?或者在我实现教义的过程中,是否有一些错误的代码


谢谢

所以我不完全确定问题出在哪里或什么地方,但似乎条令一定是在某个地方缓存的。毕竟,我确保了我的对象具有正确的值post persist,而pre flush。刷新后,它的值突然与预期值不同

无论如何,为了解决这个问题,我添加了以下行:

$this->em->clear();

刚刚从我的引导程序中获取了条令资源。这可确保在删除和重新创建架构之前,从实体管理器中完全清除所有托管实体。

它不应与缓存相关,您可以发布单元测试的内容吗?