2010-11-11 40 views
8

Tôi đang sử dụng PHPUnit để kiểm tra chèn đối tượng qua đối tượng lưu trữ của tôi. Mỗi đối tượng miền có dấu thời gian được thêm và lastmodified, được xử lý tự động bởi đối tượng lưu trữ. Tôi có thể sử dụng PHPUnits DB phương pháp mở rộng assertDataSetsEqual và đi qua như dữ liệu XML thiết lập như dưới đây cho thấy. Vấn đề được thêm vào và lastmodified không thể được hardcoded vào bộ dữ liệu XML vì điều này sẽ thay đổi tất cả các thời gian tự động, tôi có thể nói với PHPUnit bỏ qua các cols? hoặc so sánh đầu ra bảng theo một cách khác (không phải XML), nơi tôi có thể bỏ qua các cột này?Kiểm tra cơ sở dữ liệu PHPUnit

thử nghiệm

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

Trả lời

9

Theo

này đã được tích hợp sẵn.

Cũng xem những slide bằng M.Lively (các DBUnit tác giả chính)

và Ultimate Guide B. Eberlei để kiểm tra DB với PHPUnit

Vì vậy, nó nên làm việc dọc theo dòng của

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

@Gcoop đó là nhiều hơn một trường hợp biết-nơi-to-nhìn hơn bất cứ điều gì khác. Tôi không có đầu mối bộ lọc tồn tại cho đến khi bạn hỏi. Cảm ơn vì đã giúp tôi tìm kiếm. Tôi cũng học được điều gì đó mới mẻ;) – Gordon

+0

Điều tương tự tồn tại đối với việc lọc bảng: 'new PHPUnit_Extensions_Database_DataSet_TableFilter ($ table, $ excludeColumns)'. – Archimedix

Các vấn đề liên quan