【发布时间】:2019-05-29 04:58:21
【问题描述】:
在我使用 Nunit 的单元测试文件中,我尝试编写测试用例以测试所有 if/else 分支。
有没有办法在单元测试中调用此方法时在此方法中注入特定的DateTime.Now?
该方法需要餐厅的打开/关闭时间。
public void LunchDinnerBummer(string openingTime, string closingTime)
{
//Based on the current time, alerts the user
//if it is lunch/dinner time or outside of
//business hours
var openTime = DateTime.Parse(openingTime);
var closeTime = DateTime.Parse(closingTime);
//End of lunch time
var lunchTime = DateTime.Parse("3:00 PM");
//For lunch time
if (openTime < DateTime.Now && DateTime.Now < lunchTime)
Console.WriteLine("It is time to go to Ted’s for lunch!");
//For dinner time
else if (DateTime.Now > lunchTime && DateTime.Now < closeTime)
Console.WriteLine("It is time to go to Ted’s for dinner!");
//If outside of business hour before Opening Time for today
else if (DateTime.Now < openTime)
{
TimeSpan span = openTime.Subtract(DateTime.Now);
Console.WriteLine("Bummer, Ted’s is closed");
Console.WriteLine("Ted’s will open in: " + span.Hours + " hour " + " and " + span.Minutes + " minutes ");
}
//If outside of business hours past closing time for today
//Calculate for the hours and minutes left till opening time for next day
else
{
var openTimeNextDay = openTime.AddDays(1);
TimeSpan span = openTimeNextDay.Subtract(DateTime.Now);
Console.WriteLine("Bummer, Ted’s is closed");
Console.WriteLine("Ted’s will open in: " + span.Hours + " hour " + " and " + span.Minutes + " minutes ");
}
}
【问题讨论】:
-
引用的问题更笼统,即如何使用 DateTime.Now 进行测试。这是一个相当具体的例子,有几个可能的具体答案。
标签: c# unit-testing nunit stub