博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单元测试mock当前时间
阅读量:4310 次
发布时间:2019-06-06

本文共 1566 字,大约阅读时间需要 5 分钟。

在实际项目中很多地方用到DateTime.Now,这个时间是时时变化的。如果要进行单元测试对比预期结果时,这个时间无法预测,可以添加如下两个时间类

namespace Common.Helper{    ///     /// 获取当前时间    /// However, when unit testing with static state, always remember to tear down your fixture by calling .    ///     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
();timeMock.SetupGet(tp => tp.Now).Returns(new DateTime(2010, 3, 11));TimeProvider.Current = timeMock.Object;

 

需要用到moq4模拟对象

转载于:https://www.cnblogs.com/missile/p/7065831.html

你可能感兴趣的文章
HDP Sandbox里面git clone不了数据(HTTP request failed)【目前还没解决,所以hive的练习先暂时搁置了】
查看>>
动态分区最佳实践(一定要注意实践场景)
查看>>
HIVE—索引、分区和分桶的区别
查看>>
Hive进阶总结(听课总结)
查看>>
大数据领域两大最主流集群管理工具Ambari和Cloudera Manger
查看>>
Sqoop往Hive导入数据实战
查看>>
Mysql到HBase的迁移
查看>>
Sqoop import进阶
查看>>
Hive语句是如何转化成MapReduce任务的
查看>>
Hive创建table报错:Permission denied: user=lenovo, access=WRITE, inode="":suh:supergroup:rwxr-xr-x
查看>>
Hive执行job时return code 2排查
查看>>
hive常用函数及数据结构介绍
查看>>
Hive面试题干货(亲自跟着做了好几遍,会了的话对面试大有好处)
查看>>
力扣题解-230. 二叉搜索树中第K小的元素(递归方法,中序遍历解决)
查看>>
力扣题解-123. 买卖股票的最佳时机 III(动态规划)
查看>>
Django 源码阅读:服务启动(wsgi)
查看>>
Django 源码阅读:url解析
查看>>
Docker面试题(一)
查看>>
第一轮面试题
查看>>
2020-11-18
查看>>