2010-11-11 13 views
8

Sto usando PHPUnit per verificare l'inserimento di oggetti tramite il mio oggetto di archiviazione. Ogni oggetto dominio ha un timestamp aggiunto e lastmodified, che viene gestito automaticamente dall'oggetto di archiviazione. Posso usare il metodo di estensioni DB di PHPUnits assertDataSetsEqual e passare come set di dati XML come mostrato di seguito. Il problema viene aggiunto e lastmodified non può essere codificato nel set di dati XML poiché questo cambierà automaticamente tutto il tempo, posso dire a PHPUnit di ignorare questi cols? o confrontare le tabelle in un altro modo (non XML) dove posso ignorare queste colonne?Test database PHPUnit

prova

$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 Dataset

<?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> 

risposta

9

Secondo

questo è già incorporato.

vedere anche queste diapositive M.Lively (il DBUnit principale autore)

e di B. Eberlei Ultimate Guide a DB Test con PHPUnit

così dovrebbe funzionare sulla falsariga di

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

@Gcoop che era molto di più di un caso di sapere-dove-a-look di ogni altra cosa. Non avevo idea che il filtro esistesse fino a quando non hai chiesto. Quindi grazie per avermi fatto una ricerca. Ho anche imparato qualcosa di nuovo;) – Gordon

+0

La stessa cosa esiste per il filtro della tabella: 'new PHPUnit_Extensions_Database_DataSet_TableFilter ($ table, $ excludeColumns)'. – Archimedix

Problemi correlati