我想设置我的PHPUnit测试与教条2 ORM。然而,我得到的奇怪问题我只能假设为某种缓存(在Doctrine的结尾),我无法弄清楚如何克服。这是我的本钱:奇怪的学说2行为与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的记录。换句话说,第二个测试是从第一个测试中获得$值。 我已经通过在第二次测试开始时转储所有记录进行了双重检查,并且这不会返回任何内容。看来在Doctrine中有一些我不知道的缓存问题。
我试着清除,我所知道主义有可能确保各种高速缓存,如:
$cacheDriver = new \Doctrine\Common\Cache\XcacheCache();
$cacheDriver->deleteAll();
任何人都可以提出什么我能试试吗?或者在我实现了Doctrine的方式中,有一些错误的代码。
感谢
它不应该与缓存相关,你可以请你发布你的单元测试的内容吗? – WizardZ 2012-08-07 07:04:54