0
我正在使用TimeCop Gem來測試對時間敏感的測試用例。 lib目錄中有一個文件。它只包含字符串常量。Timecop無法正確模擬日期
例子。
module DateStr
SAMPLE = "Some date #{Date.current}"
end
在我的黃瓜測試案例中,這部分代碼沒有得到模擬時間。它選擇系統時間。這是爲什麼?
我正在使用TimeCop Gem來測試對時間敏感的測試用例。 lib目錄中有一個文件。它只包含字符串常量。Timecop無法正確模擬日期
例子。
module DateStr
SAMPLE = "Some date #{Date.current}"
end
在我的黃瓜測試案例中,這部分代碼沒有得到模擬時間。它選擇系統時間。這是爲什麼?
當加載DateStr
時,將創建SAMPLE
常數並指定存在的日期。
我想說這是常量的錯誤用例,因爲它們不應該改變。
編輯。
我不會爲此行爲使用常量。一個的hackish方式是使用lambda表達式:
module DateStr
SAMPLE = -> {"Some date #{Date.current}"}
end
DateStr::SAMPLE.call # This will evaluate to current date
但是,這不是一個很好用的情況下,由於價值不不斷它的自我,而不是爲這種行爲,你應該使用一個簡單的類方法:
module DateStr
def self.sample
"Some date #{Date.current}"
end
end
噢耶..我失去了我的想法。哈哈。 –
但是我無論如何都不能嘲笑它。模塊負載將始終發生在TimeCop mocks Date之前。這裏有什麼建議嗎? –
@AjinkyaPisal編輯答案。 – Magnuss