默认值隐藏噪音
测试应只陈述一两个关键值。构建器默认提供合法对象,测试只覆盖相关字段。测试于是成为场景描述,而不是一堵无关数据墙。
const admin = aUser({ role: 'admin' });
const inactive = aUser({ active: false });
模式变更只改一处
新增必填字段时,构建器只更新一次,不关心该字段的测试继续工作。添加一个无覆盖调用构建器的测试,确保默认对象仍然合法。
避免共享可变夹具
跨测试共享的模块级对象可能被一个测试修改并影响另一个。构建器每次返回新对象。嵌套对象要么新建子对象,要么在测试修改时深拷贝。
验证构建器
预期结果:无覆盖调用产生合法领域对象,修改一个字段只影响该字段。用针对 schema 验证默认对象的测试,以及构建两个用户并断言它们是不同对象的测试确认。新增必填字段时,套件应在一处失败,而不是几十处。