区分不完整样本与故意无效的输入
Explicit partial and invalid fixture intent
测试中明确哪些样本是有效但不完整,哪些用于验证错误处理。
以下示例与示意结果由本站编写,用于说明方法,不是模型实测结果。
使用场景
测试只读body的处理器和输入校验器。教学有效部分请求含body.id字符串,故意无效样本则为数字id;两者都用双重类型断言会隐藏测试意图。
具体做法
按断言目标分类:无关字段省略是有效部分夹具;违反契约的字段是故意无效输入;完整性是目标时构造完整形状。使用项目认可的显式构造方式,标被放宽约束与原因,校验部分样本仍符合所需字段类型。运行行为检查,不把帮助函数当生产校验器。具体第三方助手版本契约先核实。
反例
所有样本都as unknown as Request,包括无关字段省略与错类型,测试说明不区分。
改进写法
有效body-only夹具保留字符串id并标partial;数字id样本标intentional-invalid,验证拒绝;若测试请求完整性就使用完整fixture。选已有项目构造器并说明宽松范围,不以强转绕过不清楚的字段错误。
为什么这样改
样本表达所需信息与故意破坏的约束,评审才能知道类型放宽是否服务行为测试。统一擦除类型让无意错误与刻意反例无法区分。
如何验证
教学partial的id=”123”应进入处理;invalid的id=123应被校验拒绝;完整样本遗漏必需字段应在构造/检查阶段暴露。检查测试真的到达校验器,不仅验证fixture标签。
适用边界
测试放宽不是生产类型安全。助手函数可能只做类型层处理而不校验运行值,实际API需核版本;无需为简单样例引入新库。原始Request的完整契约以项目定义为准。