如何解決因為 DateTime.Now 導致無法通過單元測試

在寫程式時,我們很常用 DateTime.Now 來取得現在的時間。但這樣會遇到一個問題:若要為該方法寫測試時,會因為使用 DateTime.Now,每次取得的時間都不同,導致測試無法通過。

現在有個方法單純的回傳字串,但因為 timeNow 是不固定的,導致測試無法通過,這邊介紹兩種方法,都可以解決此問題。

1
2
3
4
5
6
7
public string CreateMessage()
{
DateTime timeNow = DateTime.Now;
string result = "Time now is " + timeNow.ToString();

return result;
}
Read more