我想設置我的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