Doctrine2: тестирование классов репозитория с помощью конфигурации YAML - PullRequest
1 голос
/ 18 декабря 2011

У меня есть конфигурация YAML для моего проекта symfony2, использующего Doctrine2.Я не понимаю, как именно адаптировать запись поваренной книги к настройке YAML.

Мое сопоставление доктрины имеет значение /path/to/my/bundle/Resources/config/doctrine/IpRange.orm.yml

При запуске PHPUnit я получаюошибка:

Doctrine \ ORM \ Mapping \ MappingException: не найден файл сопоставления с именем 'Yitznewton.FreermsBundle.Entity.IpRange.orm.yml' для класса 'Yitznewton \ FreermsBundle \ Entity \ IpRange'.

Звучит так, будто мне нужно настроить тестовую установку для использования соглашений о присвоении имен в symfony, но я не знаю, как это сделать.

Использование symfony-standard.git проверено на v2.0.7

Вот мой тест:

<?php

namespace Yitznewton\FreermsBundle\Tests\Utility;

use Doctrine\Tests\OrmTestCase;
use Doctrine\ORM\Mapping\Driver\DriverChain;
use Doctrine\ORM\Mapping\Driver\YamlDriver;
use Yitznewton\FreermsBundle\Entity\IpRange;
use Yitznewton\FreermsBundle\Entity\IpRangeRepository;

class IpRangeRepositoryTest extends OrmTestCase
{
    private $_em;

    protected function setup()
    {
        // FIXME: make this path relative
        $metadataDriver = new YamlDriver('/var/www/symfony_2/src/Yitznewton/FreermsBundle/Resources/config/doctrine');
        $metadataDriver->setFileExtension('.orm.yml');

        $this->_em = $this->_getTestEntityManager();
        $this->_em->getConfiguration()
            ->setMetadataDriverImpl($metadataDriver);

        $this->_em->getConfiguration()->setEntityNamespaces(array(
            'FreermsBundle' => 'Yitznewton\\FreermsBundle\\Entity'));
    }

    protected function getRepository()
    {
        return $this->_em->getRepository('FreermsBundle:IpRange');
    }

    public function testFindIntersecting_RangeWithin_ReturnsIpRange()
    {
        $ipRange = new IpRange();
        $ipRange->setStartIp('192.150.1.1');
        $ipRange->setEndIp('192.160.1.1');

        $this->assertEquals(1, count($this->getRepository()
            ->findIntersecting($ipRange)),
            'some message');
    }

1 Ответ

0 голосов
/ 20 декабря 2011

Опять же, глядя на документы Symfony, кажется, что интеграционное тестирование с базой данных live test предпочтительнее модульного тестирования для классов репозитория. То есть нет поддержки заглушки EntityManager.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...