[英]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.