Doctrine Symfony4条令单元测试:实体在缓存中有旧数据吗?

Doctrine Symfony4条令单元测试:实体在缓存中有旧数据吗?,doctrine,phpunit,symfony-4.4,Doctrine,Phpunit,Symfony 4.4,我正在开发一个Symfony4应用程序,想测试一个服务是否真的更新了我的数据库 这里我给出一个数据传输对象 public function update(ChargeDto $chargeDto): ChargeDto { $charge = $this->chargeRepository->find($chargeDto->id); // The mapper fills the new data into my entity $charge = Ch

我正在开发一个Symfony4应用程序,想测试一个服务是否真的更新了我的数据库

这里我给出一个数据传输对象

public function update(ChargeDto $chargeDto): ChargeDto
{
    $charge = $this->chargeRepository->find($chargeDto->id);
    // The mapper fills the new data into my entity
    $charge = ChargeMapper::fromDto($charge, $chargeDto);
    // here I check that the entity has in fact the new data 
    VarDumper::dump($charge->getAuthorPNumber());

    $this->entityManager->persist($charge);
    $this->entityManager->flush();
    $this->entityManager->refresh($charge);
    // here I check that the entity still has the new data 
    VarDumper::dump($charge->getAuthorPNumber());

    return ChargeMapper::toDto($charge, $chargeDto);
}
在我的测试类中,我从数据库中获取更新的数据集,以检查它是否真的更新了:

    $res = $this->chargeRepo->find($updatedDto->id);
    VarDumper::dump($res->getAuthorPNumber());
我得到了旧数据。如果我手动查看数据库,我发现它实际上已经更新,并且包含了新的值

我不知道任何缓存都处于激活状态。 我的测试如何获得真正的新值和更新值


注意:我只是仔细检查了一下:对于prod环境,我有一个条令缓存的配置(/config/prod/doctor.yaml),但对于开发环境和测试环境都没有。您的
entityManager
应该有一个名为clear的函数,它将删除缓存的对象。(确保仅在测试中调用此函数,而不是在实际代码中调用)


通过将EntityName作为参数传递给函数,也只能从缓存中清除1种类型的实体。

您的
entityManager
应该有一个名为clear的函数,该函数将删除缓存的对象。(确保仅在测试中调用此函数,而不是在实际代码中调用)


通过将EntityName作为参数传递给函数,也只能从缓存中清除1种类型的实体。

entityManager应该有一个名为
clear
的函数,该函数将删除缓存的对象。(确保您只在测试中调用它,而不是在实际代码中调用它)完美!是否要将其添加为答案?entityManager应该有一个名为
clear
的函数,该函数将删除缓存的对象。(确保您只在测试中调用它,而不是在实际代码中调用它)完美!你想加上这个作为答案吗?