是否可以从聚合工厂调用规范进行验证,或者该验证调用是否属于单元测试(DDD)?

Mar*_*ers 8 validation domain-driven-design aggregate specification-pattern factory-pattern

我创建了一个工厂和一组规范来创建和验证聚合根.目前我对工厂进行了一些测试,这些测试称工厂的产品规格,但我想知道这是否足够.从设计的角度来看,将工厂与其产品的规格相结合可能会更好,因为它们密切相关.

如果聚合根产品的规范用于验证而不是用于创建,那么从工厂内部调用它是否有意义?

或者单位测试是否足够好?

Mar*_*ers 2

答案可能取决于您如何使用规范,以及代码在创建过程中是否会出现很多问题。

规格几乎可以用于您能想到的任何事物。在基本层面上,规范只是封装到对象中的可控条件语句。无论代码在何处使用条件逻辑,如果开发人员认为有一定的理由,都可以将该逻辑重构为规范。

在实际代码中使用规范并没有什么问题,只要它使代码更可用、更可维护或更可读。创建仅在测试中使用的规范也没有什么问题。规范是简单的对象,由于大多数规范相对简单,以一种或另一种方式将代码与规范耦合似乎不会对维护或可重用性产生太大的负面影响。

如果聚合根产品的规范用于验证而不是创建,那么从工厂内部调用它是否有意义?

是的,但可能只有当您遇到麻烦或对工厂的产品缺乏信心时。

或者单元测试是否足够好?

是的,从单元测试中调用规范足以证明工厂产品的有效性(至少就规范所涵盖的内容而言)。然而,我不经常在单元测试中使用规范,只有当我遇到困难时,或者它是我正在测试的逻辑的一部分时。