Я хочу удалить мой класс обслуживания, который сохраняет 2 объекта. Только тест завершился неудачно, потому что лицо-человек не получает идентификатор от entityManager, потому что оно издевается.Test Doctrine покрасневшее сущность
Есть ли способ обновить объект человека после того, как флеш вызывается в первый раз.
class Foo
{
...
public function save()
{
$em = $this->getEntityManager();
$person = new Person();
$person->setName('Dude');
$em->persist($person);
$em->flush();
$user = new User();
$user->setPersonId($person->getId());
$user->setEmail('[email protected]');
$em->persist($user);
$em->flush();
}
}
class FooTest
{
...
public function testSave_UserIsSaved()
{
$person = new Person();
$person->setName('dude');
$user = new User();
$user->setPersonId(4); // <-- this is where it gets wrong
$user->setEmail('[email protected]');
$person = array(
'name' => 'Dude',
);
$user = array(
'person_id' => 3,
'email' => '[email protected]',
);
$emMock = $this->getMockBuilder('\Doctrine\ORM\EntityManager')
->setMethods(array('persist', 'flush'))
->getMock();
$emMock->expects($this->exactly(2))
->method('persist')
->with(
$this->logicalOr(
$this->equalTo($person),
$this->equalTo($user)
)
);
$emMock->expects($this->exactly(2))
->method('flush');
$foo = new Foo($emMock);
$foo->save();
}
}
Спасибо за ваш ответ. Я пробовал что-то подобное раньше, без успеха. Я проверю ваш пример, когда снова буду дома. – WitteStier
Привет, @WitteStier, добро пожаловать! Дайте мне знать, если вам нужна дополнительная помощь. – Matteo
Я был только в состоянии проверить это, когда я не использовал это утверждение, потому что модель человека была обновлена до того, как она была протестирована. $ emMock -> ожидает (this- $> один раз()) метод -> ('сохраняются') -> будет ($ this-> returnCallback (функция ($ о) {если ($ о InstanceOf $ лицо) { $ -> setId (4); }})) – WitteStier