如何在symfony WebTestCase中通过测试中的夹具类型获得条令夹具引用



我正在使用条令夹具在我的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

相关内容

  • 没有找到相关文章

最新更新