加入收藏 | 设为首页 | 会员中心 | 我要投稿 莱芜站长网 (https://www.0634zz.com/)- 云连接、建站、智能边缘云、设备管理、大数据!
当前位置: 首页 > 编程开发 > PHP > 正文

php – 模拟所有DateTime实例用于测试的时间.

发布时间:2020-07-16 05:07:18 所属栏目:PHP 来源:互联网
导读:我想在 PHPUnit或Behat测试期间为DateTime实例化的每个实例设置时间. 我正在测试与时间有关的业务逻辑.例如,类中的方法只返回过去或将来的事件. 事情我不想做,如果可能的话: 1)在DateTime周围编写一个包装器,在代码中使用这个代替DateTime.这将涉及到我现在

我想在 PHPUnit或Behat测试期间为DateTime实例化的每个实例设置时间.

我正在测试与时间有关的业务逻辑.例如,类中的方法只返回过去或将来的事件.

事情我不想做,如果可能的话:

1)在DateTime周围编写一个包装器,在代码中使用这个代替DateTime.这将涉及到我现在的代码库的重写.

2)每次运行测试/套件时动态生成数据集.

所以问题是:是否可以覆盖DateTimes行为总是提供特定的时间请求?

您应该在测试中存储所需的DateTime方法以返回预期值.
$stub = $this->getMock('DateTime');
    $stub->expects($this->any())
         ->method('theMethodYouNeedToReturnACertainValue')
         ->will($this->returnValue('your certain value'));

见http://www.phpunit.de/manual/3.6/en/test-doubles.html

如果您无法存储方法,因为它们被硬编码到代码中,请查看

> http://sebastian-bergmann.de/archives/885-Stubbing-Hard-Coded-Dependencies.html

这解释了如何在调用新的时候调用回调.然后,您可以使用具有固定时间的自定义DateTime类替换DateTime类.另一个选择是使用http://antecedent.github.io/patchwork

(编辑:莱芜站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读