vitest/valid-expect
March 1, 2026 ยท View on GitHub
๐ Enforce valid expect() usage.
๐ผโ ๏ธ This rule is enabled in the โ
recommended config. This rule warns in the ๐ all config.
๐ง This rule is automatically fixable by the --fix CLI option.
This rule triggers a warning if expect is called with no argument or with more than one argument. You change that behavior by setting the minArgs and maxArgs options.
Options
| Name | Description | Type |
|---|---|---|
alwaysAwait | Require awaiting every async assertion. | Boolean |
asyncMatchers | Matchers that should be considered async assertions. | String[] |
maxArgs | Maximum number of arguments allowed for expect. | Number |
minArgs | Minimum number of arguments allowed for expect. | Number |
alwaysAwait
-
Type:
boolean -
Default:
false -
Enforce
expectto be called with anawaitexpression.// โ good await expect(Promise.resolve(1)).resolves.toBe(1) await expect(Promise.reject(1)).rejects.toBe(1) // โ bad expect(Promise.resolve(1)).resolves.toBe(1) expect(Promise.reject(1)).rejects.toBe(1)
asyncMatchers
- Type:
string[] - Default:
[]
{
"vitest/valid-expect": ["error", {
"asyncMatchers": ["toBeResolved", "toBeRejected"]
}]
}
avoid using asyncMatchers with expect:
minArgs
-
Type:
number -
Default:
1 -
Enforce
expectto be called with at leastminArgsarguments.// โ good expect(1).toBe(1) expect(1, 2).toBe(1) expect(1, 2, 3).toBe(1) // โ bad expect().toBe(1) expect(1).toBe()
maxArgs
-
Type:
number -
Default:
1 -
Enforce
expectto be called with at mostmaxArgsarguments. -
Exception:
expect(value, "message")is allowed.// โ good expect(1).toBe(1) expect(1, 'expect value to be one').toBe(1) const message = 'expect value to be one' expect(1, `Error Message: ${message}`).toBe(1) // โ bad expect(1, 2, 3, 4).toBe(1)