0

我有一个包含 IUserRepository 抽象的 DDD.IdentityAccess.Domain 的实现。还有另一个 dll -> DDD.IdentityAccess.Persistence.Sql 包含 IUserRepository 抽象的实现。现在,我想一直测试我的 IdentityAccess -> Api -> DomainLogic -> 数据库。让我们看一个“CreateUser”用例。我通过我的 httpClient 调用“CreateUser”,然后我想查询 db 以检查用户是否实际添加到 db。我的rest api上没有'user/id'操作,所以唯一的选择是使用DDD.IdentityAccess.Persistence.Sql,但它会给DDD.IdentityAccess.Domain带来依赖。我应该重用这个 dll,还是创建另一个与域无关的 DAL?

4

1 回答 1

2

这与域驱动设计的关系不大,而是与组织测试设置有关。

集成测试的编写成本很高,但可以通过显示多个组件按预期协同工作来带来巨大的价值。这是一个权衡。

也就是说,如果我对您的理解正确,您的问题是您是否应该模拟 sql 数据访问对象或一直到数据库,执行相同的 sql 语句。

这里没有正确或错误的答案。如果重点是测试业务逻辑,那么专注于测试领域和模拟数据库访问层。

如果重点是测试一个简单的保存操作是否从上到下工作,那么不要模拟。(但当然要使用测试数据库。)

于 2018-05-23T20:22:27.377 回答