Symfony4学说单元测试:实体在缓存中是否有旧数据?

灾难简

我正在开发一个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);
}

在测试类中,我从db获取更新的数据集,以检查它是否确实更新过:

    $res = $this->chargeRepo->find($updatedDto->id);
    VarDumper::dump($res->getAuthorPNumber());

我得到了旧数据。如果我手动查看数据库,实际上它已更新并且包含新值。

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

PS:我只是仔细检查了一下:对于产品环境,我有一个用于理论缓存的配置(/config/prod/doctrine.yaml),但是对于开发环境和测试环境都没有。

德克·舒尔滕

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

您还可以通过将EntityName作为参数传递给函数来从缓存中仅清除一种类型的实体。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Symfony4单元测试中创建多个实体

symfony中的单元测试实体何时使用测试数据库?

Symfony 4单元测试分离的实体无法删除

Grafana提醒Prometheus / Pushgateway是否有旧数据

单元测试中是否有任何简单的slf4j使用模式?

在表单中添加带有旧数据的类

f#单元测试中是否有任何DataRowAttribute?

如何对Symfony形式的实体断言进行单元测试?

Python - Selenium 有旧数据

Symfony4:如何从链接实体接收数据?

单元测试与集成测试:内存中的实体框架核心

清除数据源,reloadData,单元格仍然有旧信息吗?

防止在单元测试中写入数据库-.NET MVC /实体框架

是否可以在qt单元测试中以单独的方法设置要测试的数据?

是否可以在Symfony2单元测试中更改语言环境?

具有Autofac单元测试DataContext的实体框架6

Go测试中的单元测试之间是否可以有共享的上下文?

symfony 4 表单单元测试不起作用

在对实体框架DAL进行单元测试时,是否有任何理由使用Mock对象?

单元测试Symfony Messenger

是否有必要在单元测试中模拟所有依赖关系?

symfony4命令测试中的模拟服务

在单元测试中,如何测试消息框是否显示?

python中的单元测试-在测试中创建数据框

角度单元测试是否根据服务中的数据调用了组件方法

没有 Symfony 的单元测试服务注释

咨询symfony中的实体关系(学说)

是否对角4中的每个组件都需要进行单元测试?

单元测试学说:不能模拟存储库方法