Zend_Test_PHPUnit_Db
Die Kopplung von Datenzugriff und dem Domain Modell benötigt oft die Verwendung einer
Datenbank für Testzwecke. Aber die Datenbank ist persistent über alle Tests was dazu
führen kann das die Test Resultate sich gegenseitig beeinflussen. Weiters ist das
Setup der Datenbank eine ganz schöne Arbeit damit die Tests laufen können. PHPUnit's
Datenbank Extension vereinfacht das Testen mit einer Datenbank durch das Anbieten eines
einfachen Mechanismus für das Setup und Herunterfahren der Datenbank zwischen den
unterschiedlichen Tests. Diese Komponente erweitert die PHPUnit Datenbank Extension
mit Zend Framework spezifischem Code, damit das Schreiben von Datenbank Tests für
Zend Framework Anwendungen vereinfacht wird.
Das Testen von Datenbanken kann mit zwei konzeptionellen Einträgen beschrieben werden,
DataSets und DataTables. Intern kann die PHPUnit Datenbank Extension eine Objekt Struktur
von einer Datenbank erstellen, und dessen Tabellen und enthaltene Zeilen von einer
Konfigurationsdatei oder einer realen Datenbankinhalt. Dieser abstrakte Objektgraph kann
dann verglichen werden indem Assertions verwendet werden. Ein üblicher Verwendungszweck
beim Testen von Datenbanken ist das Setup von einigen Tabellen mit eingefügten Daten, in
denen dann einige Operationen stattfinden, und letztendlich geprüft wird das der
endgültige Datenbankstatus identisch mit dem vordefinierten und erwarteten Status ist.
Zend_Test_PHPUnit_Db vereinfacht diese Aufgabe indem es erlaubt wird
DataSets und DataTables von existierenden Zend_Db_Table_Abstract
oder Zend_Db_Table_Rowset_Abstract Instanzen erstellt werden.
Weiters erlaubt es diese Komponente jede Zend_Db_Adapter_Abstract
für das Testen zu integrieren wobei die originale Erweiterung nur mit
PDO arbeitet. Eine Implementation des Test Adapters für
Zend_Db_Adapter_Abstract ist auch in dieser Komponente inkludiert.
Sie erlaubt es einen Db Adapter zu instanziieren der überhaupt keine Datenbank benötigt und
als SQL arbeitet sowie als Ergebnis Stack der von den
API Methoden verwendet wird.