2011-07-13 25 views
6

'un altında kalıyor Bu yüzden, ZF/Doktrini uygulamamda testler gerçekleştirdiğimde, Doküman Varlık Yöneticisi'ni kırmak için bazı testler oluyor ve tüm ardışık testler, EM kapalı olduğundan dolayı başarısız oluyor. Doctrine'nin varlık yöneticisi kilitleniyor ve

benim test/bootstrap.php kadar EM ayarlayın:

Sonra
$application = new Zend_Application(
    APPLICATION_ENV, 
    APPLICATION_PATH . '/configs/application.ini' 
); 
$application->bootstrap(); 
(...) 
$bootstrap = $application->getBootstrap(); 
$em = $bootstrap->getResource('doctrinemanager'); 

Ben Test setUp içine set() fonksiyonu ($ this -> _ servis hizmeti test ediliyor):

$em = App::getEntityManager(); 
$this->_em = clone $em; 
$this->_service->setEm($this->_em); 

ve EM istisna ve yakın kusmaya neden olabilir (ve bu benim için doğru bir davranış) bir test çalıştırdığınızda sonra, bunun nedeni EM elbette başarısız tüm testler boyunca kapalı kalır kapatılıyor. Tahmin edebileceğiniz gibi testler için beklediğim davranış bu değil.

Serviste ayarlamadan önce EM'yi klonlamayı denedim, ancak çalışmadı.

Bazı Doktrini yöntemlerini kullanarak EM'yi yeniden açmanın kolay bir yolu var mı?

cevap

6

Hayır, bildiğim kadarıyla değil. Bunun en basit yolu, her testin kurulum aşamasında çalıştırmanız için basitçe (yeniden) önyükleme yapmaktır. Bu nedenle, her sınama yeni bir $application örneğini ve bununla birlikte yeni, yeni bir $em alır. Bu hızlı düzeltme.

Uygun çözüm muhtemelen sizin testlerinizi Zend_Application'unuzdan ayırmaktır. Testlerinizin muhtemelen bir sahte bağlantı veya bir in-memory SQLite database bağlantısını kullanarak basit bir varlık yöneticisi ile çalışmasına izin verin. Test kurulum aşamasında yalnızca bu varlık yöneticisini oluşturun, böylece her test yeni bir varlık yöneticisi alır. Bu, yukarıdaki hızlı düzeltmeye benzerdir, ancak şu anda, yalnızca, tüm testleriniz için tüm uygulamanızı önyüklemek yerine, yalnızca test için bir varlık yöneticisi oluşturursunuz. Daha yalın ve daha basit.

İlgili konular