我正在创建一个React / .NET Core项目,其中一个页面显示当前日期和时间。我的控制器类如下:
namespace TestingReactDotNet.Controllers {
[Route ("api/[controller]")]
public class DayTodayController : Controller {
[HttpGet, Route ("GetDate")]
public string GetDate () {
var info = $"Today is {DateTime.Now.ToString("dddd, dd MMMM yyyy")} and the time is {DateTime.Now.ToString("hh:mm tt")}";
return info;
}
}
}
我正在尝试对此进行单元测试并模拟日期和时间,但我无法做到这一点(尽管我已经查看了其他 Stack Overflow 的问题并进行了谷歌搜索,但仍然存在困难)。我最初想使用 Moq
,但似乎不可能实现?
这是我目前为止的测试代码:
namespace TestingReactDotNetTests
{
public class DayTodayTests
{
[Test]
public void ReturnsDateAndTime()
{
var controller = new DayTodayController();
string result = controller.GetDate();
string expected = "Today is Tuesday 27 August 2019 and the time is 10:00";
Assert.AreEqual(expected, result);
}
}
}
我的问题是 - 我如何设置日期和时间,以便在字符串中调用 DateTime.Now
时,它不是当前的日期和时间?
public class DayTodayController : Controller { internal DateTime? overrideNow; public DateTime Now { get { return overrideNow ?? DateTime.Now(); } } }
然后从你的单元测试中设置overrideNow
。 - AlwaysLearning