# Zend_Test_PHPUnit_Db

Coupling of data-access and the domain model often requires the use of a database for testing purposes. But the database is persistent across different tests which leads to test results that can affect each other. Furthermore setting up the database to be able to run a test is quite some work. PHPUnit's Database extension simplifies testing with a database by offering a very simple mechanism to set up and teardown the database between different tests. This component extends the PHPUnit Database extension with Zend Framework specific code, such that writing database tests against a Zend Framework application is simplified.

Database Testing can be explained with two conceptual entities, DataSets and DataTables. Internally the PHPUnit Database extension can build up an object structure of a database, its tables and containing rows from configuration files or the real database content. This abstract object graph can then be compared using assertions. A common use-case in database testing is setting up some tables with seed data, then performing some operations, and finally asserting that the operated on database-state is equal to some predefined expected state. `Zend_Test_PHPUnit_Db` simplifies this task by allowing to generate DataSets and DataTables from existing `Zend_Db_Table_Abstract` or `Zend_Db_Table_Rowset_Abstract` instances.

Furthermore this component allows to integrate any `Zend_Db_Adapter_Abstract` for testing whereas the original extension only works with PDO. A Test Adapter implementation for `Zend_Db_Adapter_Abstract` is also included in this component. It allows to instantiate a Db Adapter that requires no database at all and acts as an SQL and result stack which is used by the API methods.