मैंने इस समस्या (दूसरों के बीच ) से निपटने के लिए सिम्फनी 1.4 (PHP) के लिए एक प्लगइन बनाया । यह Django के परीक्षण ढांचे (पायथन) के संचालन के तरीके के बाद मॉडल किया गया है : फ्रेम प्रत्येक परीक्षण शुरू होने से पहले एक अलग परीक्षण डेटाबेस बनाता है और पॉप्युलेट करता है, और यह प्रत्येक परीक्षण के पूरा होने के बाद परीक्षण डेटाबेस को नष्ट कर देता है।
मुझे इस रणनीति के बारे में कुछ चिंताएँ थीं, दोनों प्रदर्शन के संदर्भ में (यदि स्कीमा नहीं बदलती है, तो पूरी संरचना के पुनर्निर्माण के बजाय डेटा को स्पष्ट क्यों नहीं किया जाना चाहिए?) और सुविधा (कभी-कभी मैं डेटाबेस का निरीक्षण करना चाहता हूं। परीक्षण की विफलता, इसलिए इसे अंधाधुंध तरीके से नष्ट न करें!), इसलिए मैंने थोड़ा अलग तरीका अपनाया।
पहले परीक्षण के चलने से पहले, डेटाबेस नष्ट हो जाता है और फिर से बनाया जाता है, अगर पिछले परीक्षण के बाद से मॉडल में बदलाव हुए हैं। प्रत्येक बाद के परीक्षण के चलने से पहले, डेटाबेस में डेटा को हटा दिया जाता है, लेकिन संरचना का पुनर्निर्माण नहीं किया जाता है (हालांकि यदि आवश्यक हो तो एक मैनुअल पुनर्निर्माण को परीक्षण से ट्रिगर किया जा सकता है)।
प्रत्येक परीक्षण में डेटा फिक्स्चर लोड करके, कोई भी बाद के परीक्षणों में हस्तक्षेप किए बिना उस परीक्षण के लिए उचित वातावरण बना सकता है। फिक्सेचर फ़ाइलों को भी फिर से उपयोग किया जा सकता है, जो इस कार्य को बहुत कम बनाता है (हालांकि यह अभी भी परीक्षण का मेरा सबसे कम पसंदीदा हिस्सा है!)।
दोनों परीक्षण चौखटे में, डेटाबेस एडॉप्टर मौजूदा डेटा को दूषित करने से रोकने के लिए "उत्पादन" कनेक्शन के बजाय परीक्षण कनेक्शन का उपयोग करने के लिए कॉन्फ़िगर किया गया है।