# 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.