Ben inşa Symfony'nin 1.4 (PHP) için bir eklenti (diğerleri arasında) bu sorunu çözmek için. Django'nun test çerçevesinin (Python) çalışma biçiminden sonra modellenmiştir : çerçeve, her test başlamadan önce ayrı bir test veritabanı oluşturur ve doldurur ve her test tamamlandıktan sonra test veritabanını yok eder.
Hem performans açısından (şema değişmezse, neden tüm yapıyı yeniden oluşturmak yerine verileri temizlemiyorsunuz?) Hem de kolaylık açısından (bazen bir veritabanından sonra veritabanını incelemek istiyorum) bu strateji hakkında birkaç endişem vardı Test başarısızlığı, bu yüzden ayrım gözetmeden yok etmeyin!), bu yüzden biraz farklı bir yaklaşım aldım.
İlk test çalıştırılmadan önce, son testten bu yana model değişiklikleri olması durumunda veritabanı yok edilir ve yeniden oluşturulur. Sonraki her test çalıştırılmadan önce, veritabanındaki veriler silinir, ancak yapı yeniden oluşturulmaz (gerekirse manuel olarak bir testten manuel yeniden oluşturma tetiklenebilir).
Her bir teste veri fikstürlerini seçici olarak yükleyerek, sonraki testlere müdahale etmeden bu test için uygun ortamı oluşturabilirsiniz. Fikstür dosyaları da tekrar kullanılabilir, bu da bu görevi çok daha az zahmetli hale getirir (yine de test yazmadaki en az favori parçamdır!).
Her iki test çerçevesinde de veritabanı bağdaştırıcısı, test yürütmesinin var olan verileri bozmasını önlemek için "üretim" bağlantısı yerine test bağlantısını kullanacak şekilde yapılandırılmıştır.