SuperAPI AI 工具集

testing

测试与质量

查看项目

更新于 10-16 09:47

技能介绍

用途:为 SAP CAP 应用编写与评审测试,覆盖单元测试、基于 cds.test 的集成测试,以及测试运行器与测试环境的配置。主参考为 CAP 的 cds.test 文档与 CAP April 2026 发布说明。

主要能力:推荐测试运行器为 Vitest(CAP April 2026 起),cds.test 完全支持 Vitest,同时保持对 Jest、Mocha、Node 内置测试器的兼容。Vitest 完全兼容 ESM,推荐原因是 Chai v6(ESM)无法在 Jest 中完整提供,cds.test 在 Jest 中仅提供部分 Chai 模拟。CDS 10+ 新项目默认基于 ESM(package.json 中 "type": "module"),测试文件使用 import 语法;如需 CommonJS 项目,移除该字段。

使用方式:安装依赖 npm install --save-dev @cap-js/cds-test vitest。vitest.config.js 中用 defineConfig 设置 testTimeout 与 hookTimeout 为 30000。package.json 中设置 "test": "vitest run"。集成测试示例:import cds from '@sap/cds',const { GET, POST, DELETE, expect } = cds.test('.'),再用 GET('/catalog/Products') 等断言响应。认证测试用 .as('alice')、.as('carol') 指定模拟用户。外部服务可用 Vitest 的 vi.spyOn 对已连接服务实例的方法 mockResolvedValue。自定义动作可通过 POST 调用并断言 status 与返回字段。CSV 测试数据放在 db/data/,SQLite 模式下自动加载;测试隔离可用内存 SQLite(credentials.database 设为 :memory:)。

限制与注意:仍用 Jest 存在已知限制,cds.test.expect 只是部分 Chai 模拟,部分 Chai API 不可用,需用 jest.spyOn、加 --forceExit 并在 jest.config.js 设置 testTimeout: 30000,建议迁移到 Vitest。常见错误包括新项目使用 Jest、未设置 testTimeout(默认 5 秒对 CAP 启动过短)、使用共享 HANA 实例测试(应使用 SQLite :memory:)、受保护端点漏写 .as('user') 导致静默 401、直接 mock cds.db(应改为对已连接服务实例使用 vi.spyOn(srv, 'run'))。@cap-js/cds-test v1.0 是稳定的推荐选择。