2010-07-14 51 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