vitest/valid-expect-in-promise Correctness
它的作用
确保 promise 链(.then()、.catch()、 .finally())中的 expect 调用被正确地 await,或从测试中返回。
为什么这很糟糕?
当在未被 await 或返回的 promise 回调中调用 expect 时,即使断言失败,测试也可能通过,因为测试会在 promise 解析之前完成。这会导致带有错误断言的测试静默通过。
示例
以下是此规则的错误代码示例:
javascript
test("promise test", async () => {
something().then((value) => {
expect(value).toBe("red");
});
});
test("promises test", () => {
const onePromise = something().then((value) => {
expect(value).toBe("red");
});
const twoPromise = something().then((value) => {
expect(value).toBe("blue");
});
return Promise.any([onePromise, twoPromise]);
});以下是此规则的正确代码示例:
javascript
test("promise test", async () => {
await something().then((value) => {
expect(value).toBe("red");
});
});
test("promises test", () => {
const onePromise = something().then((value) => {
expect(value).toBe("red");
});
const twoPromise = something().then((value) => {
expect(value).toBe("blue");
});
return Promise.all([onePromise, twoPromise]);
});如何使用
To enable this rule using the config file or in the CLI, you can use:
json
{
"plugins": ["vitest"],
"rules": {
"vitest/valid-expect-in-promise": "error"
}
}ts
import { defineConfig } from "oxlint";
export default defineConfig({
plugins: ["vitest"],
rules: {
"vitest/valid-expect-in-promise": "error",
},
});bash
oxlint --deny vitest/valid-expect-in-promise --vitest-plugin版本
此规则于 v1.60.0 中加入。
