2020-08-25 23:57:08 +00:00
|
|
|
# Disallow duplicate setup and teardown hooks (`no-duplicate-hooks`)
|
|
|
|
|
2022-11-10 10:43:16 +00:00
|
|
|
<!-- end auto-generated rule header -->
|
|
|
|
|
2020-08-25 23:57:08 +00:00
|
|
|
A `describe` block should not contain duplicate hooks.
|
|
|
|
|
2022-11-10 10:43:16 +00:00
|
|
|
## Rule details
|
2020-08-25 23:57:08 +00:00
|
|
|
|
|
|
|
Examples of **incorrect** code for this rule
|
|
|
|
|
|
|
|
```js
|
|
|
|
/* eslint jest/no-duplicate-hooks: "error" */
|
|
|
|
|
|
|
|
describe('foo', () => {
|
|
|
|
beforeEach(() => {
|
|
|
|
// some setup
|
|
|
|
});
|
|
|
|
beforeEach(() => {
|
|
|
|
// some setup
|
|
|
|
});
|
|
|
|
test('foo_test', () => {
|
|
|
|
// some test
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
// Nested describe scenario
|
|
|
|
describe('foo', () => {
|
|
|
|
beforeEach(() => {
|
|
|
|
// some setup
|
|
|
|
});
|
|
|
|
test('foo_test', () => {
|
|
|
|
// some test
|
|
|
|
});
|
|
|
|
describe('bar', () => {
|
|
|
|
test('bar_test', () => {
|
|
|
|
afterAll(() => {
|
|
|
|
// some teardown
|
|
|
|
});
|
|
|
|
afterAll(() => {
|
|
|
|
// some teardown
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
|
|
|
Examples of **correct** code for this rule
|
|
|
|
|
|
|
|
```js
|
|
|
|
/* eslint jest/no-duplicate-hooks: "error" */
|
|
|
|
|
|
|
|
describe('foo', () => {
|
|
|
|
beforeEach(() => {
|
|
|
|
// some setup
|
|
|
|
});
|
|
|
|
test('foo_test', () => {
|
|
|
|
// some test
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
// Nested describe scenario
|
|
|
|
describe('foo', () => {
|
|
|
|
beforeEach(() => {
|
|
|
|
// some setup
|
|
|
|
});
|
|
|
|
test('foo_test', () => {
|
|
|
|
// some test
|
|
|
|
});
|
|
|
|
describe('bar', () => {
|
|
|
|
test('bar_test', () => {
|
|
|
|
beforeEach(() => {
|
|
|
|
// some setup
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
```
|