Symfony:无法在带有phpunit的测试套件中删除分离的实体
实际上,我正在对我的api进行一些函数测试,我面临着一个我并不真正理解的问题 我想测试一个与远程web托管服务器交互的API。目标是管理虚拟主机、DNS区域、数据库等。。。 我有一个测试远程服务器,为了避免冲突,我在测试后删除创建的内容(在Symfony:无法在带有phpunit的测试套件中删除分离的实体,php,symfony,doctrine-orm,phpunit,Php,Symfony,Doctrine Orm,Phpunit,实际上,我正在对我的api进行一些函数测试,我面临着一个我并不真正理解的问题 我想测试一个与远程web托管服务器交互的API。目标是管理虚拟主机、DNS区域、数据库等。。。 我有一个测试远程服务器,为了避免冲突,我在测试后删除创建的内容(在TearDown()函数中)并创建基础(在setUp()函数中)。在setUp()中,我还将夹具加载到设置中 在添加我的主实体的子实体的测试之后,我想清理远程服务器: $service = $this->fixtures->getReference
TearDown()
函数中)并创建基础(在setUp()
函数中)。在setUp()
中,我还将夹具加载到设置中
在添加我的主实体的子实体的测试之后,我想清理远程服务器:
$service = $this->fixtures->getReference('service-web');
$this->container->get('webmanager')->deleteHosting($service, true);
deleteHosting()
函数删除所有远程内容(true参数是“force”参数,它确保函数在发生错误后不会停止
$service
变量包含我的主服务实体。我在这个实体中还与addonDomain
的实体有一对多的关系。
我的Functional测试创建一个附加域。
测试正常,但当我尝试删除我的服务时,附加的实体会让条令大喊大叫:条令\ORM\ORMInvalidArgumentException:Detached entity AppBundle\entity\service\Web\AddonDomain@0000000054814da900000000073c524a无法删除
我尝试了很多方法,但没有一种有效(即:使用条令管理器来检索实体,而不是使用夹具)
非常感谢你的帮助,
致以最良好的祝愿
解决了!
事实上,我使用的是测试类的容器和实体管理器,而不是客户端本身。这就是问题所在…虽然这是一个老问题,但我最近在使用Symfony 4.4时遇到了同样的问题,并帮助我解决了问题。基本上,正如@Can Vural所建议的,在删除之前调用merge就解决了问题lem,但缺少的一点是您必须再次分配实体,以便:
$entity = $doctrineManager->merge($detachedEntity);
$doctrineManager->remove($entity);
$doctrineManager->flush();
这解决了我的问题
请记住,
merge
已被弃用,并将在原则3中删除:我也有同样的问题,不知道如何解决:/就像一年前发生的那样,我记不太清楚。但正如在原始帖子中更新的那样,与其使用$this->container
,不如在两个self::$container
de>setUp()和tearDown
方法。希望这能有所帮助。在对实体调用remove
之前,我通过调用merge
解决了这个问题。不确定这是否是最好的方法,但它能起作用!不过感谢您的回复!使用$this->em=static::$kernel->getContainer()->get('doctor.orm.entity\u manager')时没有任何更改
或$this->em=$this->client->getContainer()->get('doctrine.orm.entity_manager');
甚至没有em->merge(…)
。我的实体只有在逐个实体刷新时才被删除,而不是在单个刷新时被删除。
合并已被弃用,并将在条令3中删除: