Для функционального тестирования Symfony2, что является лучшим методом для проверки содержимого базы данных?

Я вижу, что есть несколько способов загрузить данные о приборах в базу данных. Но после функционального тестирования, какой лучший / стандартный способ подтвердить правильность написанного в базе данных?

Для этого в пакете phpunit есть целый раздел, где вы можете загрузить набор данных, а затем использовать такие вещи, как assertTablesEqual (), чтобы сравнить содержимое таблицы с ожидаемым содержимым. Но это не похоже на использование под Symfony2, и я не могу найти какой-либо другой стандартный метод.

Как другие решают эту проблему?

5

Решение

Symfony2 использует доктрину ORM по умолчанию, или вы можете установить другое управление базой данных (MongoDB в качестве примера). Проверить app\config\parameters.php файл для установки соединения с базой данных и app\config\config.php проверить / установить тип беременности. С ORM вам не нужно проверять много вещей, таких как пакет phpunit, потому что он уже интегрирован в протокол и многое другое. Проверьте здесь для более подробной информации.

Если вы хотите загрузить datafixtures, Вы можете экспортировать свою фактическую базу данных, чтобы сохранить ее, или создать новую только для тестирования и переключать базы данных в app\config\parameters.php создать новый, как это app\config\parameters_dev.php, В этом случае веб-сайт и ваша локальная версия не будут использовать одну и ту же базу данных. Вы также можете редактировать app\config\parameters.php и предотвратить загрузку с .gitgnore файл.

1

Другие решения

Вот пример из набора тестов, который включает результаты базы данных. Если вам нужно напрямую взаимодействовать с базой данных в вашем тесте, менеджер тестов может быть доступен для теста. Для получения дополнительной информации см. этот бит документации. Обратите внимание, что результаты чаще всего представляются на веб-странице и читаются сканером DOM.

public function setUp()
{
self::bootKernel();
$this->em = static::$kernel->getContainer()
->get('doctrine')
->getManager()
;
$this->tool = static::$kernel->getContainer()
->get('truckee.toolbox')
;

$classes = array(
'Truckee\VolunteerBundle\DataFixtures\SampleData\LoadFocusSkillData',
'Truckee\VolunteerBundle\DataFixtures\SampleData\LoadMinimumData',
'Truckee\VolunteerBundle\DataFixtures\SampleData\LoadStaffUserGlenshire',
'Truckee\VolunteerBundle\DataFixtures\SampleData\LoadStaffUserMelanzane',
'Truckee\VolunteerBundle\DataFixtures\SampleData\LoadOpportunity',
'Truckee\VolunteerBundle\DataFixtures\SampleData\LoadVolunteer',
);
$this->loadFixtures($classes);
$this->client = $this->createClient();
$this->client->followRedirects();
}

public function testOutboxUser()
{
$crawler = $this->login('admin');
$link = $crawler->selectLink("Send alerts to organizations")->link();
$crawler = $this->client->click($link);
$outboxObj = $this->em->getRepository('TruckeeVolunteerBundle:AdminOutbox')->findAll();
$outbox = $outboxObj[0];
$recipient = $outbox->getRecipientId();
$type = $this->tool->getTypeFromId($recipient);

$this->assertEquals('staff', $type);
}
0