Qualcuno ha un link a un buon tutorial o libro di lavoro su come iniziare ad aggiungere il livello DBUnit ai miei test PHPUNit?PHPUnit e DBUnit - per iniziare
Ho provato seguendo il codice in
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;
}
Viene creato il XML tramite mysqldump comando. Userò felicemente CSV, o anche un array in memoria (qualunque cosa funzioni)
Purtroppo non riesco proprio a far partire questo sistema.
Dopo una buona quantità di tempo nell'apprendimento di DbUnit, vorrei che qualcuno mi avesse detto che fondamentalmente bastava "TRUNCATE's (cancella) una tabella e la popola con dati personalizzati forniti da un XML. Apparentemente, è tutto. Nessuna connessione magica persistente, nessun mondo di crescita e sogni simile ad Avatar e gioco di dati temporanei. Alla fine del giorno posso praticamente fare la stessa cosa con 'CREATE TEMPORARY TABLE', che è ancora meglio perché mantiene le relazioni. Quindi mi piacerebbe dire qualcosa del tipo 'non sprecare il tuo tempo con questa estensione schifosa' ma a causa della mia esperienza limitata, non lo farò. – Ben
Mentre sono qui riferirò un paio di cose che mi ci sono volute un po 'per capire: devi chiamare 'parent :: setUp()' se hai un metodo 'setUp()', altrimenti il il database non popolerà. E con questo metodo, DbUnit aumenterà "volentieri" il tuo livello di 'PDO :: ATTR_ERRMODE 'a" eccezione "quando è' setUp() ', quindi anche se tu avessi' ERRMODE_SILENT' otterrai delle eccezioni dove non ti aspetti loro. Inoltre, non riesco a trovare un'API, quindi devi esaminare il codice sorgente o leggere il libro, che è come la documentazione, ma più lungo, con gemme importanti nascoste nelle pagine di testo./ rant – Ben
Spiacente di indurre in errore, sopra ho detto 'CREATE TEMPORARY TABLE' mantiene le relazioni - in realtà, non manterrà le chiavi esterne. Non preoccuparti però, tira semplicemente una variante 'CREATE TABLE' per ottenere la stessa cosa. – Ben