Как создавать тесты с сущностями Doctrine, не сохраняя их (как установить id)

Я работаю над тестами для проекта Symfony2, и сейчас я ищу способ создать тесты, включающие объекты-сущности без их сохранения. Проблема в:Я бы это приватное поле и для этого нет сеттера. Я могу создать новый объект и установить некоторые свойства, но я не могу проверить что-либо с участиемGetId () звонки.

$entity = new TheEntity();
// Can't set ID!
$entity->setProperty('propertyValue');

$name = $entity->getProperty(); // OK
$id = $entity->getId(); // not OK - null

Решения, о которых я знаю:

Инициализация всего ядра (Symfony'sWebTestCase :: createKernel ()) и сохранение сущностейСоздание фиктивного объекта для каждого объекта, который будет возвращать действительный идентификаторХаки как статический метод вОрганизация класс, возвращающий инициализированный объект, или добавляющий сеттер дляЯ бы поле

Каков рекомендуемый способ справиться с этим, как получить сущность для тестирования чистым и быстрым способом с установленным идентификатором?

редактировать

Оказалось, я могу решить это с насмешкой ... извините, я все еще учусь. Я искал чистый, стандартный, но быстрый способ добиться цели. Однако я забыл о втором параметреgetMock() - этоМне не нужно издеваться над каждым методом сущности, которую я собираюсь использовать, Я хотел избежать множественного->expects()->method()->will() и т.д. И это достигается путем добавления:array('getId'), Этот вспомогательный метод решает проблему:

protected function getEntityMock($entityClass, $id)
{
    $entityMock = $this->getMock($entityClass, array('getId'));
    $entityMock
            ->expects($this->any())
            ->method('getId')
            ->will($this->returnValue($id));

    return $entityMock;
}

При создании многих сущностей одного и того же класса, конечно, все можно упростить с помощью более вспомогательных методов, таких как этот:

protected function getTheEntityMock($id)
{
    return $this->getEntityMock('\The\NameSpace\TheEntity', $id);
}

Единственныйограничение является то, что сама сущность не может использоватьid собственность, толькоgetId() добытчик.

Любой ценный вклад по-прежнему приветствуется, но я верю PHPUnit'sgetMock() решил это хорошо.

Ответы на вопрос(3)

Ваш ответ на вопрос