我有一个C#MVC EF6代码优先的解决方案。有一个存储库,服务,模型和网站的项目。需求是一个列出系统中所有情况的屏幕。 Case有一个名为Attention的bool属性,它是只读的,其中包含一些业务逻辑,如果ResponseDue属性> DateTime.Now,则返回true。基于日期测试条件逻辑
为了测试的目的,客户希望能够假设今天的日期实际上是如此,如果ResponseDue属性是未来3周,他们将能够说出这个屏幕从现在起3周后会是什么样子,当这个日期到来时,确保列出的案例得到注意。
我不确定如何满足此测试要求而不会伤害设计或性能。我正在考虑在Case类上有一个CompareDate属性,该属性默认为DateTime.Now,但如果需要可以设置为不同的日期,但是我不确定如何将该日期从服务层传递到存储库层,然后获取所有案例,但将CompareDate设置为传入公共虚拟IEnumerable GetAll()方法的内容。
看看像Microsoft Fakes或Moq这样的模拟框架。您可以将这些插入到单元测试中,以模拟您的数据存储库返回未来的日期。 – swestfall