单元测试:DateTime.Now

单元测试:DateTime.Now,第1张

单元测试:DateTime.Now

最好的
策略是把当前时间的抽象和注入是抽象到消费者。


另外 ,您还可以将时间抽象定义为 环境上下文

public abstract class TimeProvider{    private static TimeProvider current =        DefaultTimeProvider.Instance;    public static TimeProvider Current    {       get { return TimeProvider.current; }       set        {if (value == null){    throw new ArgumentNullException("value");}TimeProvider.current = value;        }   }   public abstract DateTime UtcNow { get; }   public static void ResetToDefault()   {TimeProvider.current = DefaultTimeProvider.Instance;   } }

这将使您可以像这样使用它:

var now = TimeProvider.Current.UtcNow;

在单元测试中,可以

TimeProvider.Current
用“测试双精度/模拟”对象替换。使用最小起订量的示例:

var timeMock = new Mock<TimeProvider>();timeMock.SetupGet(tp => tp.UtcNow).Returns(new DateTime(2010, 3, 11));TimeProvider.Current = timeMock.Object;

但是,当在静态状态下进行单元测试时,请务必记住通过调用来 拆开灯具

TimeProvider.ResetToDefault()



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5440938.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存