Загружаем в БД тестовые данные из файла test/fixtures.yml
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'test', true);
$databaseManager = new sfDatabaseManager($configuration);
$connection = $databaseManager->getDatabase("doctrine")->getConnection();
$connection->exec("SET FOREIGN_KEY_CHECKS = 0");
Doctrine::loadData(sfConfig::get('sf_test_dir').'/fixtures.yml');
$connection->exec("SET FOREIGN_KEY_CHECKS = 1");
Это код можно использовать как в unit-тестах, так и в функциональных.
Вот класс для simpletest:
/**
* базовый класс для тестирования базы данных
* @author mayorov
*
*/
class DbUntiTestCase extends UnitTestCase
{
/**
*
* @var Doctrine_Connection
*/
protected $connection;
/**
*
* @var Doctrine_Connection_Profiler
*/
protected $profiler;
function __construct()
{
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'test', true);
$databaseManager = new sfDatabaseManager($configuration);
$this->connection = $databaseManager->getDatabase("doctrine")->getConnection();
$this->profiler = new Doctrine_Connection_Profiler();
$conn = Doctrine_Manager::connection();
$conn->setListener($this->profiler);
}
function setUp()
{
$this->loadFixture(sfConfig::get('sf_test_dir').'/fixtures.yml');
}
protected function loadFixture($filePath)
{
Doctrine_Manager::connection()->unsetAttribute(Doctrine_Core::ATTR_LISTENER);
$this->connection->exec("SET FOREIGN_KEY_CHECKS = 0");
Doctrine::loadData($filePath);
$this->connection->exec("SET FOREIGN_KEY_CHECKS = 1");
Doctrine_Manager::connection()->setListener($this->profiler);
}
/**
* вывод лог sql запрсоов выполненых в тесте
*/
protected function printSqlLog()
{
foreach ($this->profiler as $event) {
echo $event->getQuery() . "\n";
$params = $event->getParams();
if( ! empty($params)) {
echo '( ';
echo implode(', ', $params);
echo " )\n";
}
}
}
}
Комментариев нет:
Отправить комментарий