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

如何在Perl中对调用localtime()的函数进行单元测试?,perl,unit-testing,Perl,Unit Testing,我有一个调用localtime的方法,我为此编写了一个单元测试。我在测试中调用localtime,以便知道预期的答案。到目前为止,一切顺利。我碰巧在另一个时区的机器上运行单元测试,可以预见,测试失败了,因为它们需要几小时的时间。我想我可以动态地确定正确的期望值,但这似乎与在提问之前知道答案的想法背道而驰 你对如何处理这个问题有什么想法吗?是否覆盖本地时间?这似乎有些极端 谢谢 我认为在单元测试中计算答案的值没有问题。单元测试应该足够简单,以避免与复杂性相关的bug,但简单的时区计算可能不会越界

我有一个调用
localtime
的方法,我为此编写了一个单元测试。我在测试中调用
localtime
,以便知道预期的答案。到目前为止,一切顺利。我碰巧在另一个时区的机器上运行单元测试,可以预见,测试失败了,因为它们需要几小时的时间。我想我可以动态地确定正确的期望值,但这似乎与在提问之前知道答案的想法背道而驰

你对如何处理这个问题有什么想法吗?是否覆盖本地时间?这似乎有些极端


谢谢

我认为在单元测试中计算答案的值没有问题。单元测试应该足够简单,以避免与复杂性相关的bug,但简单的时区计算可能不会越界


不过,在这种特殊情况下,您可以将时区设置为固定值(或多个值),作为测试的一部分。请参阅这篇关于堆栈溢出的文章。

我不确定您的具体要求是什么,但您可能可以使用or来完成一些事情,这两种方法都将取代
localtime
,并使用模拟版本替换好友,而模拟版本的行为将按照您的要求进行。

如果tzset不是那么容易使用,测试::MockTime看起来会很完美——谢谢!