知识卡片
领域服务测试只验证协作,不重复聚合已覆盖的逻辑
内容
为原子任务编写产品与测试代码后,再对组合任务做TDD——一个组合任务对应一个领域服务。领域服务测试用Mockito的mock()模拟资源库行为(如返回Optional.empty()模拟未找到票),验证时除断言异常抛出外,还要用verify()验证领域服务与资源库的协作。关键原则:由于原子”提名”任务已被聚合(Ticket)的测试完全覆盖,领域服务测试中只需验证聚合与资源库之间的协作逻辑即可——这样既保证代码质量和测试覆盖率,又能减少编写和维护测试的成本。领域服务测试还能驱动出各资源库接口的定义。发散:分层测试要避免重复覆盖——下层已验证的行为,上层只验证”是否正确调用/协作”,否则测试维护成本会随分层翻倍。
参考来源
- 位置:《解构领域驱动设计》第20章 20.3.4(源文件:_epub-src/OEBPS/033.xhtml)
- 结论依据:原文说明领域服务测试用mock/verify验证协作,且因聚合已覆盖原子任务而只验证协作逻辑以降成本。
- 原始内容:由于原子"提名"任务已经被Ticket的测试完全覆盖,故而在领域服务的测试中,只需要验证聚合与资源库之间的协作逻辑即可。