知识卡片
应用服务集成测试须覆盖正常与回滚两类用例
内容
为应用服务编写集成测试,至少需考虑两个测试用例:正常执行完成的用例,与抛出异常需要回滚事务的用例。编写事务回滚测试用例时,可以故意营造抛出异常的情况——如作者故意通过ValidDateRepository删除提名场景所需的有效日期,导致抛出DomainException,应用服务捕获后统一抛出ApplicationException,从而验证事务回滚(回滚标记异常类型为ApplicationException)。NominationAppService的测试本应仅依赖被测应用服务,但引入TrainingRepository等资源库依赖是为了给集成测试准备和清除数据所用。发散:事务的正确性只能靠”故意制造失败并断言数据未被改动”来证明——不写回滚用例的事务测试等于没测事务。
参考来源
- 位置:《解构领域驱动设计》第20章 20.3.5(源文件:_epub-src/OEBPS/033.xhtml)
- 结论依据:原文说明应用服务集成测试须覆盖正常与回滚用例,并演示故意制造异常验证回滚。
- 原始内容:为应用服务编写集成测试时,至少需要考虑两个测试用例:正常执行完成的用例与抛出异常需要回滚事务的用例。