Skip to content

Prefer Expect Assertions

SuggestionAuto-fixable
small-rules/prefer-expect-assertions

Enforce expect assertion guards in tests and prefer expect.assertions(n) over expect.hasAssertions() when the count is known.

Diagnostic Messages

assertionsRequiresNumberArgument
This argument should be a number
assertionsRequiresOneArgument
`expect.assertions` expects a single argument of type number
hasAssertionsTakesNoArguments
`expect.hasAssertions` expects no arguments
haveExpectAssertions
Every test should have either `expect.assertions(<number of assertions>)` or `expect.hasAssertions()` as its first expression
preferAssertionsCount
Use `expect.assertions({{count}})` instead of `expect.hasAssertions()` when the count is known
suggestAddingAssertions
Add `expect.assertions({{count}})`
suggestAddingHasAssertions
Add `expect.hasAssertions()`
wrongAssertionCount
Expected {{expected}} assertions, but test has {{actual}} expect calls

Configuration

This rule accepts one options object after the severity.

additionalAssertionFunctionsOptional

Additional assertion function names counted as test assertions.

additionalExpectCallNamesOptional

Additional expect-like call names counted when checking assertion counts.

onlyFunctionsWithAsyncKeywordOptional

Only require assertion guards for test callbacks marked async.

onlyFunctionsWithExpectInCallbackOptional

Only require assertion guards when expect is called inside a nested callback.

onlyFunctionsWithExpectInLoopOptional

Only require assertion guards when expect is called inside a loop.

{
"jsPlugins": [
"@pobammer-ts/small-rules"
],
"rules": {
"small-rules/prefer-expect-assertions": [
"error",
{
"additionalAssertionFunctions": [],
"additionalExpectCallNames": [],
"onlyFunctionsWithAsyncKeyword": false,
"onlyFunctionsWithExpectInCallback": false,
"onlyFunctionsWithExpectInLoop": false
}
]
}
}

Examples

Prefer assertion count over hasAssertions
test('works', () => { expect.hasAssertions(); expect(value).toBe(1); });

After auto-fix

test('works', () => { expect.assertions(1); expect(value).toBe(1); });
Explicit assertion count
test('works', () => { expect.assertions(1); expect(value).toBe(1); });