对于应用程序测试套件,我需要强制约会。这些测试需要在特定时期(01-01-2012至2012年12月31日之间)进行。我不能修改应用程序的千个文件而不修改代码的稳定性,我需要一种方法来在引导程序中指定它或者替换服务器返回的日期。 可能吗?如果是,怎么样?
编辑:有评论:重载函数的日期,日期时间等等?
答案 0 :(得分:0)
我认为最好的办法是首先将time()和date()的所有用法重构为gettime()和getdate(),然后在测试套件中覆盖这些函数。这就是可测试代码的结构(或者更好的是,将时间传递给所有需要它的函数)。
或者,您可以在可以安全设置系统时间的环境中运行测试。
最后,如果启用runkit.internal_override,则可以使用http://php.net/manual/en/function.runkit-function-redefine.php覆盖该函数