2010-07-14 52 views
5

我有一个方法调用localtime,我写了一个单元测试。我在我的测试中拨打电话localtime,以便我知道预期的答案。到现在为止还挺好。我碰巧在不同的时区在一台机器上运行单元测试,可以预见的是,测试失败了,因为它们有一些小时关闭。我想我可以动态地确定正确的期望值,但这似乎与提出问题之前知道答案的想法背道而驰。如何在Perl中调用调用localtime()的函数?

有关如何解决这个问题的任何想法?覆盖localtime?这似乎极端。

谢谢!

回答

6

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

但是,在这种特殊情况下,您可以将时区设置为固定值(或多个)作为测试的一部分。看到这个堆栈溢出后关于setting time zone in Perl

+0

tzset真棒 - 感谢指针! – 2010-07-14 13:09:04

5

我不知道你的要求是什么,但你也许能够得到一些东西使用Test::MockTimeTime::Mock,这两种产品将与行为,但是你想他们嘲笑版本替换localtime和朋友们一起完成。

+0

如果tzset不太好用,Test :: MockTime好像会很完美 - 谢谢! – 2010-07-14 13:09:33