我有一个C#MVC EF6 Code First解决方案。有一个存储库,服务,模型和Web项目。需求是一个列出系统中所有案例的屏幕。 Case有一个名为Attention的bool属性是只读的,它有一些业务逻辑,如果ResponseDue属性是>则返回true。 DateTime.Now。
出于测试目的,客户希望能够伪造什么日期今天实际上如此,如果ResponseDue属性是未来3周,他们将能够说明这个屏幕从现在起3周后会是什么样子并确保所列出的案件在该日期到来时会引起注意。
我不确定如何在不损害设计或性能的情况下满足此测试要求。我想在Case类上有一个默认为DateTime.Now的CompareDate属性,但如果需要可以设置为不同的日期,但后来我不知道如何将该日期从服务层传递到存储库层然后获取所有案例,但将CompareDate设置为传递到公共虚拟IEnumerable GetAll()方法的内容。
答案 0 :(得分:0)
如何定义可在测试中覆盖的虚拟方法或属性。
这是一个例子。不是同一个属性,但仍然是一般概念的演示。 http://unit-testing.net/CurrentArticle/How-To-Remove-Data-Dependencies-In-Unit-Tests.html
或者,您可以使用模拟框架。