我正在使用条令夹具在我的symfony应用程序中加载测试数据。
$this->fixtureLoader = $this->loadFixtures([
"MyDemonBundleDataFixturesORMLoadEntity1Data",
"MyDemonBundleDataFixturesORMLoadEntity2Data",
"MyDemonBundleDataFixturesORMLoadEntity3Data",
"MyDemonBundleDataFixturesORMLoadEntity4Data",
"MyDemonBundleDataFixturesORMLoadEntity5Data",
'MyDemonBundleDataFixturesORMLoadEntity6Data'
]);
在我的测试用例中,我想测试get分页实体。
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());
}
我想比较一下我的fixture和api响应中的页面。下面的问题是返回所有夹具参考。我要测试的实体的类型为Entity6。Entity6依赖于所有其他类型,所以我必须加载所有类型。
$entities=$this->fixtureLoader->getReferenceDepository()->getReferences();
如何仅获取Entity6类型的引用?我深入
条令\Common\DataFixtures\ReferenceDepository::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 == "MyDemonBundleEntityORMEntity6") {
$expected[] = $obj;
}
}
但参考文献是代理原则实体,所以我得到了类类型的
Proxies__CG__MyDemonBundleEntityORMEntity6
如何从条令固定装置中获得实体类型的引用?预混合代理__CG__可能不是最好的方法?最可靠的方法是什么?
不要使用get_class
,使用instanceof
:
foreach ($references as $reference) {
if ($reference instanceof MyDemonBundleEntityORMEntity6) {
$expected[] = $obj;
}
}
条令代理继承了实体类,从而实现了instanceof
。