【发布时间】:2010-10-22 13:36:00
【问题描述】:
我有几个控制器,每个控制器都有一个带有单元测试的测试类。每个单元测试调用一个动作并验证该动作是否处理给定的场景。
测试类有一个设置例程,它实例化了许多假存储库和其他假对象。假存储库具有存储库方法/函数对其进行操作的静态集合。
它运行良好,但我遇到了一些挑战:
当一个假集合中的实体引用另一个假集合中的实体时,存储库的构造函数中的代码会爆炸并变得难以管理
当单元测试调用修改虚假存储库数据的操作时,静态集合会更改状态,从而几乎不可能在其他单元测试中针对相同数据进行操作
所以我有两个问题可能需要您解释一下您的一般方法:
如何为引用其他假集合/实体的实体设置假集合?
您的虚假存储库是否支持更新/插入/删除操作?如果是这样,您如何防止一个单元测试的更改影响另一个单元测试?
【问题讨论】:
-
您能否详细说明您的第一个问题 - 发现很难将其与上下文联系起来。
-
@Ahmad:有关系的实体(即作者有书,书有作者和出版商等)。创建作者列表、书籍列表等非常容易,但建立它们之间的关系(即通过在存储库构造函数中调用实体上的 add 方法)有点麻烦。
-
有关系的实体很常见,这就是你的领域模型。现在我不想在这里混淆事物,但似乎这里缺少的是对存储库设计的进一步理解。在 DDD(领域驱动设计)中,每个聚合都有一个存储库——这有点关系到实体之间的关系
-
在一个不相关的说明中,大多数示例应用程序使用服务层、存储库层和一个贫乏的域模型(具有 getter 和 setter 的类)。 IMO 这成为了创建 asp-mvc 应用程序时的心态——我认为这个问题是当你真正尝试建模和设计一些更复杂的东西时,它就会失败
标签: asp.net-mvc unit-testing repository