2014-06-26 87 views
0

我有一个C#MVC EF6代码优先的解决方案。有一个存储库,服务,模型和网站的项目。需求是一个列出系统中所有情况的屏幕。 Case有一个名为Attention的bool属性,它是只读的,其中包含一些业务逻辑,如果ResponseDue属性> DateTime.Now,则返回true。基于日期测试条件逻辑

为了测试的目的,客户希望能够假设今天的日期实际上是如此,如果ResponseDue属性是未来3周,他们将能够说出这个屏幕从现在起3周后会是什么样子,当这个日期到来时,确保列出的案例得到注意。

我不确定如何满足此测试要求而不会伤害设计或性能。我正在考虑在Case类上有一个CompareDate属性,该属性默认为DateTime.Now,但如果需要可以设置为不同的日期,但是我不确定如何将该日期从服务层传递到存储库层,然后获取所有案例,但将CompareDate设置为传入公共虚拟IEnumerable GetAll()方法的内容。

+0

看看像Microsoft Fakes或Moq这样的模拟框架。您可以将这些插入到单元测试中,以模拟您的数据存储库返回未来的日期。 – swestfall

回答

0

如何定义可以在测试中覆盖的虚拟方法或属性?

这是一个例子。不一样的财产,但仍然是一般概念的示范。 http://unit-testing.net/CurrentArticle/How-To-Remove-Data-Dependencies-In-Unit-Tests.html

或者,您可以使用模拟框架。

+0

是的,但问题是,我需要最终用户做用户验收测试不只是单元测试,所以我想提供一个复活节彩蛋,它会显示一个配置设置,允许最终用户“设置”系统日期等于未来的日期。 – Colema18