如何在Perl中调用localtime()的单元测试函数?

Joe*_*nte 5 perl unit-testing

我有一个方法调用localtime我写了一个单元测试.我localtime在测试中接听电话,以便知道预期的答案.到现在为止还挺好.我碰巧在不同时区的机器上运行单元测试,并且可以预见,测试失败了,因为它们有几个小时的关闭时间.我想我可以动态地确定正确的预期值,但这似乎违背了在提出问题之前知道答案的想法.

有关如何处理此问题的任何想法?覆盖localtime?这看起来很极端.

谢谢!

Sco*_*ord 6

我不认为在单元测试中计算答案的值有任何问题.单元测试应该足够简单,以避免与复杂性相关的错误,但简单的时区计算可能不会跨越线.

但是,在这种特殊情况下,您可以将时区设置为固定值(或几个)作为测试的一部分.请参阅此Stack Overflow帖子,了解有关在Perl中设置时区的信息.


hob*_*bbs 5

我不确定你的要求是什么,但是你可能能够使用Test :: MockTimeTime :: Mock完成一些事情,这两者都将取代localtime你想要他们行为的模拟版本的朋友.