2010-08-25 12 views
10

प्रारंभ करना क्या किसी के पास एक अच्छा, काम करने वाला ट्यूटोरियल या मेरे PHPUNit परीक्षणों में डीबीयूनीट परत जोड़ने के साथ शुरू करने के तरीके पर एक लिंक है?PHPUnit और DBUnit -

मैं mysqldump आदेश के माध्यम से

protected function getDatabaseTester() 
{ 
    $pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass'); 
    $connection = new PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection($pdo); 
    $tester = new PHPUnit_Extensions_Database_DefaultTester($connection); 
    $tester->setSetUpOperation(PHPUnit_Extensions_Database_Operation_Factory::CLEAN_INSERT()); 
    $tester->setTearDownOperation(PHPUnit_Extensions_Database_Operation_Factory::NONE()); 
    /* 
    * the next line fails with the error 

    PHP Fatal error: __autoload(): Failed opening required 'PHPUnit_Extensions_Database_DataSet_FlatXMLDataSet.php' (include_path= *** 

    */ 
    $tester->setDataSet(new PHPUnit_Extensions_Database_DataSet_FlatXMLDataSet(dirname(__FILE__).'/../../../files/xml_database_export.xml')); 
    return $tester; 
} 

एक्सएमएल बनाई गई है में कोड निम्नलिखित की कोशिश की है। मैं खुशी से सीएसवी, या यहां तक ​​कि स्मृति में एक सरणी का उपयोग करता हूं (जो भी काम करता है)

दुर्भाग्य से मैं इस प्रणाली को शुरू नहीं कर पा रहा हूं।

उत्तर

9

PHPUnit के मैनुअल में डाटाबेस परीक्षण करने के लिए एक अध्याय है:

और PHPUnit

वहाँ भी एक ऐसे ब्लॉग पोस्ट PHPUnit के लेखक विषय पर सेबस्टियन Bergmann द्वारा (2008 हालांकि) है:

कुछ यहां तक ​​कि पुराने ब्लॉग माइक द्वारा पदों जीवंत, लेखक DbUnit विस्तार

पर पाया जा सकता

अधिक नया ट्यूटोरियल (2010) मैथ्यू Turland के ब्लॉग में होगा:

तुम भी #phpunit on Freenode IRC यात्रा कर सकते हैं आधिकारिक समर्थन प्राप्त करने के लिए।

+2

डीबीयूनीट सीखने में काफी समय के बाद, मेरी इच्छा है कि किसी ने मुझे बताया था कि यह मूल रूप से केवल 'ट्रंकेट' (मिटा देता है) एक तालिका है और इसे आपके द्वारा एक्सएमएल से प्रदान किए गए कस्टम डेटा के साथ पॉप्युलेट करता है। जाहिर है, यह है। कोई जादुई लगातार कनेक्शन नहीं, विकास और सपने की कोई अवतार जैसी दुनिया और अस्थायी डेटासेट के माध्यम से frolicking। दिन के अंत में मैं 'टेम्पररी टेबल बनाएं' के साथ एक ही चीज़ कर सकता हूं जो कि बेहतर है क्योंकि यह संबंध बनाए रखता है। तो मैं कुछ कहना चाहूंगा कि 'इस क्रैपी एक्सटेंशन के साथ अपना समय बर्बाद न करें' लेकिन मेरे सीमित अनुभव के कारण, मैं नहीं करूँगा। – Ben

+1

जबकि मैं यहां हूं, मैं कुछ ऐसी चीजों की रिपोर्ट करूंगा जो मुझे पता लगाने में कुछ समय लगे: यदि आपको 'setUp() 'विधि मिल गई है, तो आपको' parent :: setUp() 'को कॉल करने की आवश्यकता है, अन्यथा डेटाबेस पॉप्युलेट नहीं होगा। और उस विधि में, डीबीयूनीट आपके 'पीडीओ :: ATTR_ERRMODE' को "अपवाद" स्तर पर "अपवाद" स्तर पर "मददगार" स्तर पर बढ़ाएगा, इसलिए यदि आपके पास 'ERRMODE_SILENT' था तो आपको अपवाद मिलेगा जहां आप उम्मीद नहीं कर रहे हैं उन्हें। साथ ही, मुझे एक एपीआई नहीं मिल रहा है, इसलिए आपको स्रोत कोड की जांच करनी है, या पुस्तक को पढ़ने की ज़रूरत है, जो दस्तावेज की तरह है, लेकिन लंबे समय तक, पाठ के पृष्ठों में छिपे महत्वपूर्ण रत्नों के साथ।/ rant – Ben

+0

गुमराह करने के लिए खेद है, ऊपर मैंने कहा 'टेम्पलेट टेबल बनाएं' संबंध बनाए रखता है - असल में, यह विदेशी कुंजी बनाए रखेगा। हालांकि चिंता न करें, एक ही चीज़ को पूरा करने के लिए बस 'टेबल बनाएं' संस्करण को रोल करें। – Ben