← 中文资源

简体中文版本

添加测试数据构建器

用带合法默认值、显式覆盖和关联对象工厂函数的构建器替代临时测试夹具。

阅读英文原文

默认值隐藏噪音

测试应只陈述一两个关键值。构建器默认提供合法对象,测试只覆盖相关字段。测试于是成为场景描述,而不是一堵无关数据墙。

const admin = aUser({ role: 'admin' });
const inactive = aUser({ active: false });

模式变更只改一处

新增必填字段时,构建器只更新一次,不关心该字段的测试继续工作。添加一个无覆盖调用构建器的测试,确保默认对象仍然合法。

避免共享可变夹具

跨测试共享的模块级对象可能被一个测试修改并影响另一个。构建器每次返回新对象。嵌套对象要么新建子对象,要么在测试修改时深拷贝。

验证构建器

预期结果:无覆盖调用产生合法领域对象,修改一个字段只影响该字段。用针对 schema 验证默认对象的测试,以及构建两个用户并断言它们是不同对象的测试确认。新增必填字段时,套件应在一处失败,而不是几十处。