c# - 我如何模拟未来的日期来测试它?
问题描述
我的 sprint 任务之一是测试到期日期是否会改变。从 2 月 1 日开始,这将在次年的 9 月 30 日到期。从 7 月 1 日开始,3 月 31 日到期。我想测试这是否有效,但我对如何实际测试这一点持空白。我想可能在本地运行并更改我的系统时钟,但这与数据库并没有很好的配合。
internal DateTime GetPowerPackageExpirationDate()
{
if (DateTime.Now.Month >= 2 && DateTime.Now.Month <= 6) {
return new DateTime(DateTime.Now.Year + 1, 09, 30);
}
else {
return new DateTime(DateTime.Now.Year + 1, 03, 31);
}
}
解决方案
这是一个通常适用于static
s 的典型用例:
处理它的最好方法是创建一个可以模拟的自定义方法来返回日期。
例子:
public interface IDateProvider
{
DateTime Now { get; }
}
因此,您在代码中使用的具体实现将返回DateTime.Now
测试一;无论您将其设置为返回什么;未来、过去等
推荐阅读
- visual-studio-2017 - 为 Visual Studio 代码片段创建位置
- css - 分组输入和按钮
- python - 管理员中的 Django 的 get_queryset() 是否可以防止恶意对象保存?
- html - 当我从 MacOS Finder 打开一个 html 文件时,为什么 chrome 只打开一个空白窗口/选项卡?
- java - 如何清除 jComboBox 中的空格
- r - 返回平均周转次数1000次
- html - 将 myanimelist.net 中的分数导入谷歌表格
- java - java fx - 在切换栏更改后更新 texfield - 小错误
- java - 浓缩咖啡:从文本视图中获取文本值并存储在字符串中?
- c++ - 推导指南、initializer_list、类型推导过程