2012-02-08 53 views
9

我有一個應用程序構建在Symfony2 + Doctrine2上,我想爲(使用phpunit)創建一些測試。Temporary Doctrine2 fixtures for testing with phpunit

例如,如果我想測試一個唯一的驗證程序對數據庫中的記錄,我想創建一個記錄我可以使用,但測試後,我不再需要它。那麼有沒有辦法創建臨時(或虛擬)燈具,還是我必須手動創建和刪除它們?

回答

20

您可以使用Doctrine DataFixture,並把這個代碼在單元測試類的設置方法

$loader = new Doctrine\Common\DataFixtures\Loader; 
$loader->loadFromDirectory('/path/to/MyDataFixtures'); 
$purger = new Doctrine\Common\DataFixtures\Purger\ORMPurger($em); 
$executor = new Doctrine\Common\DataFixtures\Executor\ORMExecutor($em, $purger); 
$executor->execute($loader->getFixtures()); 

您可以參考文檔,瞭解如何創建DataFixture類。

這裏是如何做到這一點的好例子:Symfony 2 + Doctrine 2 + PHPUnit 3.5: Serialization of closure exception

PS:我假設你已經在這個例子中工作$ EM(EntityManager的)。

+2

或者 $ loader = new \ Symfony \ Bridge \ Doctrine \ DataFixtures \ ContainerAwareLoader(static :: $ kernel-> getContainer()); 如果您需要使用實現ContainerAwareInterface的燈具。 另外,謝謝!剛剛使用了這個答案。 – skqr 2013-04-28 22:24:36

+0

PRMPurger真的需要$ em來啓動它嗎? – Tjorriemorrie 2014-02-04 12:45:02

+0

從src目錄加載所有燈具的最佳方法是什麼? – 2015-10-02 17:02:02