2010-11-11 14 views
8

Estoy usando PHPUnit para probar la inserción de objetos a través de mi objeto de almacenamiento. Cada objeto de dominio tiene una marca de tiempo añadida y modificada por última vez, que maneja el objeto de almacenamiento automáticamente. Puedo usar PHPUnits método de extensiones DB assertDataSetsEqual y pasar como conjunto de datos XML como se muestra a continuación. El problema se agrega y lastmodified no se puede codificar en el conjunto de datos XML, ya que esto cambiará todo el tiempo de forma automática, ¿puedo decirle a PHPUnit que ignore estas cols? o comparar las tablas de salida de otra manera (no XML) donde puedo ignorar estas columnas?PHPUnit Database Testing

prueba

$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()); 

conjunto de datos XML

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

Respuesta

9

Según

esto ya está incorporado.

ver también estas diapositivas por M.Lively (el principal autor DBUnit)

y última guía de B. Eberlei a Prueba de DB con PHPUnit

así que debería funcionar en la línea de

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

@Gcoop que era mucho más un caso de saber-donde-aspecto que cualquier otra cosa. No tenía idea de que el filtro existe hasta que me preguntes. Así que gracias por hacerme buscar. Aprendí algo nuevo, también;) – Gordon

+0

Lo mismo existe para el filtrado de tablas: 'new PHPUnit_Extensions_Database_DataSet_TableFilter ($ table, $ excludeColumns)'. – Archimedix