2012-02-08 10 views
9

Tôi có một ứng dụng được xây dựng trên Symfony2 + Doctrine2 mà tôi muốn tạo một số xét nghiệm (sử dụng phpunit). Ví dụ: nếu tôi muốn kiểm tra trình xác thực độc đáo chống lại bản ghi trong DB, tôi muốn tạo bản ghi mà tôi có thể làm việc, nhưng sau khi thử nghiệm, tôi không cần nó nữa. Vì vậy, có một cách để tạo ra tạm thời (hoặc ảo) đồ đạc hoặc tôi phải tự tạo và xóa chúng?Các thiết bị Doctrine2 tạm thời để thử nghiệm với phpunit

Trả lời

20

Bạn có thể sử dụng Doctrine DataFixture và đặt mã này trong phương pháp thiết lập của bạn của một lớp đơn vị kiểm tra:

$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()); 

Bạn có thể tham khảo các tài liệu để xem cách tạo lớp DataFixture.

Đây là một ví dụ tốt về làm thế nào để làm điều đó: Symfony 2 + Doctrine 2 + PHPUnit 3.5: Serialization of closure exception

PS: Tôi giả sử bạn có một công việc $ em (EntityManager) trong ví dụ này.

+2

Hoặc, $ loader = new \ Symfony \ Bridge \ Doctrine \ DataFixtures \ ContainerAwareLoader (static :: $ kernel-> getContainer()); Nếu bạn cần sử dụng vật cố định triển khai ContainerAwareInterface. Ngoài ra, cảm ơn! Chỉ cần sử dụng câu trả lời này. – skqr

+0

Trình PRMPurger có thực sự yêu cầu $ em cho việc bắt đầu không? – Tjorriemorrie

+0

cách tốt nhất để tải tất cả các đồ đạc từ thư mục src là gì? –