Как получить ссылки на учения доктрины по типу прибора в тесте в Symfony WebTestCase?

Я использую приспособления для доктрины для загрузки тестовых данных в моем приложении Symfony.

 $this->fixtureLoader = $this->loadFixtures([
"My\DemonBundle\DataFixtures\ORM\LoadEntity1Data",
"My\DemonBundle\DataFixtures\ORM\LoadEntity2Data",
"My\DemonBundle\DataFixtures\ORM\LoadEntity3Data",
"My\DemonBundle\DataFixtures\ORM\LoadEntity4Data",
"My\DemonBundle\DataFixtures\ORM\LoadEntity5Data",
'My\DemonBundle\DataFixtures\ORM\LoadEntity6Data'
]);

В моем тестовом примере я хочу протестировать объекты, разбитые на страницы.

public function testGetPaginated()
{

$entities6 = $this->fixtureLoader->getReferenceRepository()->getReferences();

$expected = array_slice($entities6, 3, 3);

$this->client = static::makeClient();
$this->client->request('GET', '/api/v1/entities6', ["page" => 2, "limit" => 3, "order" => "id", "sort" => "asc"], array(), array(
'CONTENT_TYPE' => 'application/json',
'HTTP_ACCEPT' => 'application/json'
));


$this->assertSame($expected, $this->client->getResponse()->getContent());

}

Я хочу сравнить страницу из моих светильников и из ответа API. Проблема в строке ниже возвращает все ссылки на приборы. Объект, который я хочу проверить, имеет тип Entity6. Entity6 зависит от всех других типов, поэтому мне нужно загрузить их все.

$ entity = $ this-> fixtureLoader-> getReferenceRepository () -> getReferences ();

Как получить ссылки только типа Entity6? Я копался в

Doctrine \ Common \ DataFixtures \ ReferenceRepository :: код getReferences

/**
* Get all stored references
*
* @return array
*/
public function getReferences()
{
return $this->references;
}

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

    foreach ($references as $reference) {
$class = get_class($obj);
if ($class == "My\DemonBundle\Entity\ORM\Entity6") {
$expected[] = $obj;
}
}

Но ссылки являются доверенным правом доктрины, поэтому я получаю тип класса

Proxies\__CG__\My\DemonBundle\Entity\ORM\Entity6

Как я могу получить ссылки на тип сущности из учений доктрины? Префикс Proxies__CG__ не может быть лучшим способом сделать это? Какой самый надежный способ?

6

Решение

Не использовать get_classиспользовать instanceof:

foreach ($references as $reference) {
if ($reference instanceof \My\DemonBundle\Entity\ORM\Entity6) {
$expected[] = $obj;
}
}

Прокси доктрины наследуют класс сущности, таким образом выполняя instanceof,

0

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

Других решений пока нет …

По вопросам рекламы [email protected]