处理我们的系统使用nservicebus超时每24小时触发一次事件的项目。是否有可能通过单元测试“伪造”24小时,因此测试可以在任何给定时间运行,因此无需等待测试运行前一天?
重写的超时方法如下所示:
public override void Timeout(object state)
{
ExportFileGenerator.GenerateFile(_entryDataStore.GetEntriesOlderThan(DateTime.Now));
RequestUtcTimeout(TimeSpan.FromHours(TimeLeftToDailyJob()), "");
}
答案 0 :(得分:3)
我在这里写了关于如何做到这一点的博客:
答案 1 :(得分:1)
您只需通过提取对时间相关服务的依赖性(在您的情况下,这将是TimeLeftToDoDailyJob
方法)。
基本上有两种方法可以实现这一目标:
我会采用第二种方法,因为它通常会导致更多的解耦设计,从而导致代码更简单,从而更容易进行测试。