2010-11-11 4 views
8

Ich verwende PHPUnit, um das Einfügen von Objekten über mein Speicherobjekt zu testen. Jedes Domänenobjekt verfügt über einen hinzugefügten und zuletzt geänderten Zeitstempel, der vom Speicherobjekt automatisch verarbeitet wird. Ich kann PHPUnits DB Extensions Methode AssertDataSetsEqual und Übergabe als XML-Datensatz wie folgt verwenden. Das Problem wurde hinzugefügt und lastmodified kann nicht fest in das XML-Dataset geschrieben werden, da sich dies automatisch ändert. Kann ich PHPUnit sagen, diese Spalten zu ignorieren? oder die Tabellenausgabe anders vergleichen (nicht XML), wo ich diese Spalten ignorieren kann?PHPUnit Database Testing

-Test

$user = new Social_User(); 
$user->setFk_mswuserId(10); 
$user->setFirstName('Gavin'); 

$store = new Storage(); 
$store->save($user); 

$xml_dataset = $this->createFlatXMLDataSet('after-new.xml'); 
$this->assertDataSetsEqual($xml_dataset, $this->getConnection()->createDataSet()); 

XML-Datensatz

<?xml version="1.0" encoding="UTF-8"?> 
<dataset> 
      <user id="1" password="NULL" ip="0" added="0" authenticated="0" lat="0" lon="0" avatar="0" fk_mswuserId="1" timezoneoffset="0" firstName="Ben" lastName="Freeston" deleted="0" lastModified="0" /> 
      <user id="2" password="NULL" ip="0" added="0" authenticated="0" lat="0" lon="0" avatar="0" fk_mswuserId="10" timezoneoffset="0" firstName="Gavin" lastName="Cooper" deleted="0" lastModified="0"/> 
</dataset> 

Antwort

9

Nach

dies bereits eingebaut.

siehe auch diese Folien durch M.Lively (Haupt DBUnit Autor)

und B. Eberlei Ultimate Guide to DB Testing mit PHPUnit

So sollte es nach dem Vorbild der

arbeiten
$database_dataset = new PHPUnit_Extensions_Database_DataSet_DataSetFilter ( 
    $this->getConnection()->createDataSet(array('bank_account')), 
    array('bank_account' => array ('date_created')) // excluded 
); 
+3

@Gcoop, die viel mehr ein Fall von zu wissen-wo-to-Look als alles andere war. Ich hatte keine Ahnung, dass der Filter existiert, bis du gefragt hast. Danke, dass Sie mich suchen lassen. Ich habe auch etwas Neues gelernt;) – Gordon

+0

Dasselbe gilt für die Tabellenfilterung: 'new PHPUnit_Extensions_Database_DataSet_TableFilter ($ table, $ excludeColumns)'. – Archimedix