用途:这是一条编写、修改或保留测试时适用的原则,核心是“测试行为,而非实现”。测试应当以使用者调用代码的方式调用它,并断言用户实际看到的确切结果。若把所有被导入函数替换为 undefined 或错误值后测试仍能通过,就应重写或删除该测试。
判定不合格的形态:宽松断言或没有断言,如 toBeDefined、toBeTruthy、not.toThrow、toBeGreaterThan(0);只验证调用或未调用,如 toHaveBeenCalled、not.toHaveBeenCalled、toBeUndefined、toEqual([]);期望值由被测代码算出,如 expect(f(a)).toBe(f(a));只是复述常量、配置默认值、表格行或提示词字符串;断言测试自己构造的数据而未调用被测对象。
修正方式:在测试体内用具体输入调用被测对象,并断言字面输出或效果。对 mock,应断言它收到的载荷;对“不存在”的断言,应在另一输入上同时断言其存在;对常量,应测试读取它的机制,而不是复述该值。
保留的例外:跨表格行的关系检查(如某个键出现在两张表中、父项存在)以及 *.test-d.ts 类型检查应当保留。
限制:资料未提供更多使用步骤、安装命令或平台信息。