功能说明
表驱动测试把输入、期望和用例名集中定义,减少重复代码。该工具提供类型安全的 defineCases 与 runCases:前者检查名称唯一,后者执行函数并收集通过数与失败详情。它适合纯函数、解析器和校验器的单元测试,也可以作为测试框架之外的小型断言工具。
关键代码
defineCases 校验非空数组、每个用例有名称且不重复。runCases 使用 Object.is 作为默认比较器,遍历用例执行 execute,比较实际与期望;不一致时记录名称、实际值和期望值。execute 抛错会直接传播,不会被误记为断言失败。
for (const testCase of cases) {
const actual = execute(testCase.input);
if (equals(actual, testCase.expected)) passed += 1;
else failures.push({ name: testCase.name, actual, expected: testCase.expected });
}
return { passed, failures };
使用注意
默认 Object.is 对对象和数组按引用比较,结构化结果应传入自定义 equals。execute 不应依赖用例顺序或共享可变状态。该工具不替代测试框架,只负责组织数据与汇总结果,不会生成测试报告。重复名称会抛 RangeError,空用例数组也会抛错。
验证方式
断言两个通过用例返回 passed 2 且 failures 为空。一个失败用例记录名称、实际值与期望值。重复名称抛 RangeError,空用例数组抛 RangeError。自定义比较器可以正确比较对象。execute 抛错时应向上传播,而不是被吞掉。