📝 Enforce using expect assertions instead of callbacks.
all config.
💡 This rule is manually fixable by editor suggestions.
Ensure every test to have either expect.assertions(<number of assertions>) OR
expect.hasAssertions() as its first expression.
This will warn if a test has no assertions, or if it has assertions but they are not the first expression.
Examples of incorrect code for this rule:
test('no assertions', () => {
// ...
})
test('assertions not first', () => {
expect(true).toBe(true)
// ...
})Examples of correct code for this rule:
test('assertions first', () => {
expect.assertions(1)
// ...
})
test('assertions first', () => {
expect.hasAssertions()
// ...
})| Name | Description | Type |
|---|---|---|
onlyFunctionsWithAsyncKeyword |
Only check test functions declared with the async keyword. | Boolean |
onlyFunctionsWithExpectInCallback |
Only check test functions that contain expect in callbacks. |
Boolean |
onlyFunctionsWithExpectInLoop |
Only check test functions that contain expect inside loops. |
Boolean |
onlyFunctionsWithAsyncKeyword (default: false)
When true, only functions with the async keyword will be checked.
when this option is enabled the following code will be considered incorrect:
test('assertions first', async () => {
const data = await fetchData()
expect(data).toBe('peanut butter')
})To fix this, you'll need to add expect.assertions(1) or expect.hasAssertions() as the first expression:
test('assertions first', async () => {
expect.assertions(1)
const data = await fetchData()
expect(data).toBe('peanut butter')
})onlyFunctionsWithExpectInLoop (default: false)
When true, only functions with expect in a loop will be checked.
when this option is enabled the following code will be considered incorrect:
test('assertions first', () => {
for (let i = 0; i < 10; i++) {
expect(i).toBeLessThan(10)
}
})To fix this, you'll need to add expect.assertions(1) or expect.hasAssertions() as the first expression:
test('assertions first', () => {
expect.hasAssertions()
for (let i = 0; i < 10; i++) {
expect(i).toBeLessThan(10)
}
})onlyFunctionsWithExpectInCallback
When true, only functions with expect in a callback will be checked.
when this option is enabled the following code will be considered incorrect:
test('assertions first', () => {
fetchData((data) => {
expect(data).toBe('peanut butter')
})
})To fix this, you'll need to add expect.assertions(1) or expect.hasAssertions() as the first expression:
test('assertions first', () => {
expect.assertions(1)
fetchData((data) => {
expect(data).toBe('peanut butter')
})
})