[英]How to unit test functions calling localtime() in Perl?
我有一个调用localtime
的方法,我写了一个单元测试。 我在测试中将调用播种到localtime
,以便我知道预期的答案。 到现在为止还挺好。 我碰巧在不同时区的机器上运行单元测试,并且可以预见,测试失败了,因为他们有几个小时的休息时间。 我想我可以动态地确定正确的预期值,但这似乎违背了在提出问题之前知道答案的想法。
有关如何处理此问题的任何想法? 覆盖localtime
? 这看起来很极端。
谢谢!
我不认为在单元测试中计算答案的值有任何问题。 单元测试应该足够简单,以避免与复杂性相关的错误,但简单的时区计算可能不会跨越线。
但是,在这种特殊情况下,您可以将时区设置为固定值(或几个)作为测试的一部分。 请参阅此Stack Overflow帖子,了解有关在Perl中设置时区的信息 。
我不知道你的要求是什么,但你也许可以得到的东西做使用测试:: MockTime或时间::模拟 ,这两种产品将取代localtime
和朋友与行为,但是你想他们嘲笑的版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.