PHPUnit также предоставляет некоторую помощь в этом, взгляните на Тестирование базы данных .
По сути, вы можете написать свои тестовые классы, чтобы они расширяли PHPUnit_Extensions_Database_TestCase
, а затем использовали getConnection()
и getDataSet()
функции для загрузки данных для теста.
require_once 'PHPUnit/Extensions/Database/TestCase.php';
class PersonTest extends PHPUnit_Extensions_Database_TestCase
{
protected function getConnection() {
$pdo = new PDO('mysql:host=localhost;dbname=application_test', 'root', '');
return $this->createDefaultDBConnection($pdo, 'application_test');
}
protected function getDataSet() {
return $this->createMySQLXMLDataSet('person.xml');
}
Затем вы можете точно определить, что вы хотите проверить в базе данных в XML.
Вы также можете утверждатьчто результирующий DataSet из ваших тестов равен ожидаемому:
public function testCreate() {
// Execute some code with your ORM to create a person.
$actual = new PHPUnit_Extensions_Database_DataSet_QueryDataSet($this->getConnection());
$actual->addTable('person');
$expected = $this->createMySQLXMLDataSet('person_create_expected.xml');
$this->assertDataSetsEqual($expected, $actual);
}
В этом примере мы сравниваем только результирующую таблицу person ... Таким образом, person_create_expected.xml должен содержать только таблицу person какну.
Для создания XML вы можете использовать mysqldump
.
mysqldump --xml -t -u root -p application_test > person.xml