聚合根应该在域驱动设计中实现接口

Mat*_*nze 7 tdd domain-driven-design

我正在使用域驱动设计和测试驱动开发的项目.在阅读Evans的DDD书籍时,我注意到他没有为域中的聚合根定义接口.

如果我同时执行DDD和TDD,我应该为每个聚合根定义接口,以使聚合根类易于测试和模拟吗?如果是这样,我是否还应该为聚合根中包含的每个实体定义接口?

从我在Google和StackOverflow上的搜索中,我发现了接近我正在寻找的答案,但是我在做DDD和TDD时都特别寻求建议,因为我的假设是在进行TDD时可测试性可能在我到目前为止看到的答案中被忽略了.

eul*_*rfx 5

不,直接测试聚合.聚合本身不应该注入依赖项,如果特定行为需要依赖项,通常应该表示为接口.聚合上的接口是一种不必要的抽象 - 只有一种行为实现 - 这就是重点.另外,看看BDD和DDD - 行为驱动开发可以看作是TDD的演变,并与DDD很好地对齐.