Тестирование базы данных PHPUnit - PullRequest
8 голосов
/ 11 ноября 2010

Я использую PHPUnit для проверки вставки объектов через мой объект хранения. Каждый объект домена имеет добавленную и последнюю модифицированную метку времени, которая обрабатывается объектом хранения автоматически. Я могу использовать метод расширений БД PHPUnits assertDataSetsEqual и передать как набор данных XML, как показано ниже. Проблема добавлена, и lastmodified не может быть жестко закодирован в набор данных XML, так как он будет меняться все время автоматически, могу ли я сказать PHPUnit игнорировать эти столбцы? или сравнить вывод таблиц другим способом (не XML), где я могу игнорировать эти столбцы?

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

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

1 Ответ

9 голосов
/ 11 ноября 2010

Согласно

это уже встроено.

Также посмотрите эти слайды от M.Lively (основной автор DBUnit)

и окончательное руководство Б. Эберлей по тестированию БД с помощью PHPUnit

Так что он должен работать в соответствии с

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