我有一個方法調用localtime
,我寫了一個單元測試。我在我的測試中撥打電話localtime
,以便我知道預期的答案。到現在爲止還挺好。我碰巧在不同的時區在一臺機器上運行單元測試,可以預見的是,測試失敗了,因爲它們有一些小時關閉。我想我可以動態地確定正確的期望值,但這似乎與提出問題之前知道答案的想法背道而馳。如何在Perl中調用調用localtime()的函數?
有關如何解決這個問題的任何想法?覆蓋localtime
?這似乎極端。
謝謝!
我有一個方法調用localtime
,我寫了一個單元測試。我在我的測試中撥打電話localtime
,以便我知道預期的答案。到現在爲止還挺好。我碰巧在不同的時區在一臺機器上運行單元測試,可以預見的是,測試失敗了,因爲它們有一些小時關閉。我想我可以動態地確定正確的期望值,但這似乎與提出問題之前知道答案的想法背道而馳。如何在Perl中調用調用localtime()的函數?
有關如何解決這個問題的任何想法?覆蓋localtime
?這似乎極端。
謝謝!
我不認爲在單元測試中計算答案的值有任何問題。單元測試應該足夠簡單,以避免與複雜性相關的錯誤,但簡單的時區計算可能不會越過線。
但是,在這種特殊情況下,您可以將時區設置爲固定值(或多個)作爲測試的一部分。看到這個堆棧溢出後關於setting time zone in Perl。
我不知道你的要求是什麼,但你也許能夠得到一些東西使用Test::MockTime或Time::Mock,這兩種產品將與行爲,但是你想他們嘲笑版本替換localtime
和朋友們一起完成。
如果tzset不太好用,Test :: MockTime好像會很完美 - 謝謝! – 2010-07-14 13:09:33
tzset真棒 - 感謝指針! – 2010-07-14 13:09:04