热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Symfony测试-ClockMock/DateTime

如何解决《Symfony测试-ClockMock/DateTime》经验,为你挑选了1个好方法。

我在为基于JSON API的应用程序创建复杂测试时寻求帮助。

简短的问题场景:

测试创建临时实体(供比较)

EntityManagerMock设置为等待persist($ temporaryEntity)

使用某些参数测试调用真实方法

方法创建实体并尝试保存在模拟的EM

测试失败,因为时间更改了1秒

我们尝试使用ClockMock,但它仅适用于名为/用于命名空间的类。我们的方法在其他名称空间,实体在下一个创建。

我们正在寻找一种解决方案,该方法如何临时重写PHP平台\ DateTime类-或一种技术,如何对项目中的所有名称空间/类使用ClockMock(但仅用于测试)。我们试图修改基于Symfony的ClockMock-但找不到好方法:-/。

有什么办法吗?(我不想使用类似get_declared_class()之类的东西,并用它调用clockMock :: register-因为它对于大约15.000个测试:-/非常缓慢。

谢谢大家!



1> Matteo..:

ClockMock不适用于new \DateTime()仅基于时间的PHP函数。

从功能的公告:

这意味着您无需对原始代码进行任何更改,除非使用时,否则new DateTime()必须将其替换DateTime::createFromFormat('U', time())以使用模拟time()功能。

因此,请按照建议的方法尝试:用time函数将所有DateTime对象创建替换为named-constructor。

希望有帮助


推荐阅读
author-avatar
BeBe-DANIC_796
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有