之前我们提到单元测试需要覆盖洋葱架构最核心的部分——实体、值对象、聚合根和领域事件。现在我们讨论什么时候编写单元测试。TDD(test-driven development)测试驱动开发建议我们先写测试,这种方式过于理想,因为有时候测试很难写出,所以我们可以结合两者——测试先行兼顾代码先行。
    image.png
    测试先行需要开发者先明确代码功能,然后再去实现。当我们初次接口某个领域时,此时无法明确需求,也无法实现代码。这时我们可以转变为代码先行——实验性质地编写代码。初期的实验性质的代码通常会频繁重构甚至被摒弃,此时测试代码也无效了。当需求明确,目标清晰之后,此时遵循代码先行是可行的。比如当Money类出现时,前期的实现性质也差不多终结,这是应当使用TDD