2010-11-11 14 views
8

Używam PHPUnit do testowania wstawiania obiektów za pośrednictwem mojego obiektu pamięci masowej. Każdy obiekt domeny ma dodany i ostatnio zmodyfikowany znacznik czasu, który jest automatycznie obsługiwany przez obiekt pamięci masowej. Potrafię używać metody rozszerzeń PHPUnits DB assertDataSetsEqual i przekazywać jako zestaw danych XML, jak pokazano poniżej. Problem został dodany, a ostateczna modyfikacja nie może być zakodowana na stałe w zbiorze danych XML, ponieważ to będzie się zmieniać cały czas automatycznie, czy mogę powiedzieć PHPUnit, aby zignorował te cols? lub porównać tabele wyjściowe w inny sposób (nie XML), gdzie mogę zignorować te kolumny?Testowanie bazy danych PHPUnit

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

Odpowiedz

9

Według

ten jest już wbudowany.

zobaczyć również te slajdy przez M.Lively (główny DBUnit autor)

i B. Eberlei Ultimate Guide do testowania DB z PHPUnit

więc powinien działać wzdłuż linii

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

@Gcoop że był o wiele bardziej przypadek wiedząc-where do wygląd niż cokolwiek innego. Nie miałem pojęcia, że ​​filtr istnieje, dopóki nie zapytałeś. Dziękuję za dokonanie wyszukiwania. Nauczyłem się też czegoś nowego;) – Gordon

+0

To samo dotyczy filtrowania tabel: 'new PHPUnit_Extensions_Database_DataSet_TableFilter ($ table, $ excludeColumns)'. – Archimedix