expect.assertions()
OR expect.hasAssertions()
(prefer-expect-assertions
)Ensure every test to have either expect.assertions(<number of assertions>)
OR expect.hasAssertions()
as its first expression.
This rule triggers a warning if,
expect.assertions(<number of assertions>)
OR expect.hasAssertions()
is not present as first statement in a test, e.g.:test('my test', () => { expect(someThing()).toEqual('foo'); });
expect.assertions(<number of assertions>)
is the first statement in a test where argument passed to expect.assertions(<number of assertions>)
is not a valid number, e.g.:test('my test', () => { expect.assertions('1'); expect(someThing()).toEqual('foo'); });
The following patterns are considered warnings:
test('my test', () => { expect.assertions('1'); expect(someThing()).toEqual('foo'); }); test('my test', () => { expect(someThing()).toEqual('foo'); });
The following patterns would not be considered warnings:
test('my test', () => { expect.assertions(1); expect(someThing()).toEqual('foo'); }); test('my test', () => { expect.hasAssertions(); expect(someThing()).toEqual('foo'); });
onlyFunctionsWithAsyncKeyword
When true
, this rule will only warn for tests that use the async
keyword.
{ "rules": { "jest/prefer-expect-assertions": [ "warn", { "onlyFunctionsWithAsyncKeyword": true } ] } }
When onlyFunctionsWithAsyncKeyword
option is set to true
, the following pattern would be a warning:
test('my test', async () => { const result = await someAsyncFunc(); expect(result).toBe('foo'); });
While the following patterns would not be considered warnings:
test('my test', () => { const result = someFunction(); expect(result).toBe('foo'); }); test('my test', async () => { expect.assertions(1); const result = await someAsyncFunc(); expect(result).toBe('foo'); });