单元测试mock当前时间
生活随笔
收集整理的這篇文章主要介紹了
单元测试mock当前时间
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在實際項目中很多地方用到DateTime.Now,這個時間是時時變化的。如果要進行單元測試對比預期結果時,這個時間無法預測,可以添加如下兩個時間類
namespace Common.Helper {/// <summary>/// 獲取當前時間/// However, when unit testing with static state, always remember to tear down your fixture by calling ./// </summary>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 Now { get; }public static void ResetToDefault(){TimeProvider.current = DefaultTimeProvider.Instance;}}public class DefaultTimeProvider : TimeProvider{private readonly static DefaultTimeProvider instance =new DefaultTimeProvider();private DefaultTimeProvider() { }public override DateTime Now{get { return DateTime.Now; }}public static DefaultTimeProvider Instance{get { return DefaultTimeProvider.instance; }}} } View Code在實際代碼中使用方法:
var now = TimeProvider.Current.Now;單元測試模擬方法:
var timeMock = new Mock<TimeProvider>(); timeMock.SetupGet(tp => tp.Now).Returns(new DateTime(2010, 3, 11)); TimeProvider.Current = timeMock.Object;?
需要用到moq4模擬對象
轉載于:https://www.cnblogs.com/missile/p/7065831.html
總結
以上是生活随笔為你收集整理的单元测试mock当前时间的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 计算两个日期时间差,天数、时、
- 下一篇: 双面打印设置