Skip to content
← Back to rules

vitest/valid-expect Correctness

💡 A suggestion is available for this rule.

它的作用

检查 expect() 是否被正确调用。

为什么这很糟糕?

expect() 是一个用于在测试中断言值的函数。 它应该只接受一个参数,也就是要测试的值。 如果你调用 expect() 时不传参数,或者传入多个参数,它将无法按预期工作。

示例

以下是此规则的错误代码示例:

javascript
expect();
expect("something");
expect(true).toBeDefined;
expect(Promise.resolve("Hi!")).resolves.toBe("Hi!");

以下是此规则的正确代码示例:

javascript
expect("something").toEqual("something");
expect(true).toBeDefined();
expect(Promise.resolve("Hi!")).resolves.toBe("Hi!");

配置

此规则接受一个包含以下属性的配置对象:

alwaysAwait

type: boolean

default: false

当为 true 时,异步断言在所有上下文中都必须被 await(不只是返回语句中)。

asyncMatchers

type: string[]

default: ["toResolve", "toReject"]

被视为异步、因此需要 await 的匹配器列表(例如 toResolvetoReject)。

maxArgs

type: integer

default: 1

expect 最多应传入的参数数量。

minArgs

type: integer

default: 1

expect 最少应传入的参数数量。

如何使用

To enable this rule using the config file or in the CLI, you can use:

json
{
  "plugins": ["vitest"],
  "rules": {
    "vitest/valid-expect": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  plugins: ["vitest"],
  rules: {
    "vitest/valid-expect": "error",
  },
});
bash
oxlint --deny vitest/valid-expect --vitest-plugin

版本

此规则新增于 v0.0.14。

参考资料