jest/no-conditional-expect 正确性
其作用
此规则阻止在条件块中使用 expect,例如 if 和 catch(s)。这包括在名为 catch 的函数回调中使用 expect,这些函数被视为 Promise。
为什么这个规则不好?
Jest 仅在抛出错误时才认为测试失败,这意味着如果在条件代码(例如 catch 语句)中使用了断言函数(如 expect),测试最终可能会通过,但实际上并没有测试任何内容。此外,条件语句往往会使测试变得更脆弱和复杂,因为它们增加了理解实际正在测试的内容所需的心智思考量。
示例
javascript
it("foo", () => {
doTest && expect(1).toBe(2);
});
it("bar", () => {
if (!skipTest) {
expect(1).toEqual(2);
}
});
it("throws an error", async () => {
await foo().catch((error) => expect(error).toBeInstanceOf(error));
});
此规则与 eslint-plugin-vitest 兼容。要使用它,请将以下配置添加到 .eslintrc.json
json
{
"rules": {
"vitest/no-conditional-expect": "error"
}
}