如何使用不断变化的系统时间测试Perl应用程序?

ijw*_*ijw 2 testing perl datetime mocking

我有一个Web应用程序,我想运行一些系统测试,为了做到这一点,我将需要移动系统时间.该应用程序一直使用DateTime.

有没有人对如何更改DateTime->现在报告的时间有任何建议?我想到的唯一事情是继承DateTime并搞乱所有'使用'线,但这看起来相当具有侵略性.

答案说明:

所有三个都可以正常工作,但Hook :: LexWrap是我选择的那个因为(a)我想移动时钟而不是摇晃它(这更像是时间::模拟和朋友的目的做); (b)我一直使用DateTime,如果我小心使用它,我很高兴出现错误; (c)Hook :: LexWrap比符号表中的hack更优雅,因为它做同样的事情.(另外,它原来是我已经安装的某个模块的依赖项,所以我甚至不用CPAN它......)

hob*_*bbs 11

DateTime您可能希望查看模块Test :: MockTimeTime :: Mock,而不是采用高级方法和特定包装,它们会覆盖DateTime等等使用的低级函数,并且(运气好的话)将对任何时间敏感的代码做正确的事情.对我而言,它似乎是一种更强大的测试方式.