|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- # Suggest using `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.
-
- ## Rule details
-
- 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.:
-
- ```js
- 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.:
-
- ```js
- test('my test', () => {
- expect.assertions('1');
- expect(someThing()).toEqual('foo');
- });
- ```
-
- ### Default configuration
-
- The following patterns are considered warnings:
-
- ```js
- 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:
-
- ```js
- test('my test', () => {
- expect.assertions(1);
- expect(someThing()).toEqual('foo');
- });
-
- test('my test', () => {
- expect.hasAssertions();
- expect(someThing()).toEqual('foo');
- });
- ```
-
- ## Options
-
- #### `onlyFunctionsWithAsyncKeyword`
-
- When `true`, this rule will only warn for tests that use the `async` keyword.
-
- ```json
- {
- "rules": {
- "jest/prefer-expect-assertions": [
- "warn",
- { "onlyFunctionsWithAsyncKeyword": true }
- ]
- }
- }
- ```
-
- When `onlyFunctionsWithAsyncKeyword` option is set to `true`, the following
- pattern would be a warning:
-
- ```js
- test('my test', async () => {
- const result = await someAsyncFunc();
- expect(result).toBe('foo');
- });
- ```
-
- While the following patterns would not be considered warnings:
-
- ```js
- 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');
- });
- ```
|