2010-11-11 90 views
8

我正在使用PHPUnit來測試通過我的存儲對象插入對象。每個域對象都有一個添加和上次修改的時間戳,由存儲對象自動處理。我可以使用PHPUnits DB擴展方法assertDataSetsEqual並按照下面的XML數據集進行傳遞。該問題被添加並且上次修改後不能被硬編碼到XML數據集中,因爲它會自動更改,我可以告訴PHPUnit忽略這些列嗎?或者比較表格輸出另一種方式(不是XML),我可以忽略這些列?PHPUnit數據庫測試

測試

$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數據集

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

回答

9

根據

這已經內置。

還看到這些幻燈片由M.Lively(主DBUnit的作者)

和B. Eberlei的終極指南DB測試PHPUnit的

所以應該沿着

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

@Gcoop那是更知道,其中對外觀比什麼都重要的情況下,線工作。直到你問起,我都不知道過濾器是否存在。所以謝謝你讓我搜索。我也學到了一些新的東西:) – Gordon 2010-11-11 11:23:07

+0

表格過濾存在同樣的事情:'new PHPUnit_Extensions_Database_DataSet_TableFilter($ table,$ excludeColumns)'。 – Archimedix 2014-01-31 15:23:57