
在一个真实的 SAP S/4HANA 或 SAP BTP ABAP environment 项目里,CDS View Entity 往往已经不再只是一个简单的数据投影层。越来越多的数据计算、条件判断、association、currency conversion、authorization,以及面向 RAP 和 OData 服务的数据模型逻辑都会进入 CDS 层。问题也随之出现。如果 CDS 中写了一段价格计算逻辑,我们怎么证明价格为500时结果正确,价格为1000时边界行为正确,价格为1500时折扣公式正确,价格为空值时也没有进入错误的计算分支。更麻烦的是,如果 CDS 还声明了一个_Airlineassociation,我们又怎么证明 association 的ON条件真的可以根据航空公司代码找到对应的航空公司,而不是仅仅证明 CDS 本身能够激活。这正是 CDS Unit Test 要解决的问题。SAP 提供的 CDS Test Double Framework 会为被测试 CDS 所依赖的数据源建立 test double。测试代码不需要把测试记录真正写进/DMO/FLIGHT这样的业务表,而是把测试数据写入 framework 管理的 double,再执行正常的 ABAP SQL 查询。被测试 CDS 仍然按照自己的真实定义执行,但它读取的数据已经被测试框架替换为当前测试准备的数据。SAP 官方将这种机制描述为在数据库层为 CDS dependency 创建可更新的 test double,从