У меня есть конфигурация 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');
}