Jest提供了四个钩子,分别是 beforeEach、afterEach、beforeAll、afterAll。这四个钩子很好理解,当你想在每一个 test 前后做同一件事情时,就用 beforeEach 和 afterEach;当你想在所有 test 前后做某一件事情时,就用 beforeAll 和 afterAll。举个例子:
beforeAll(() => {console.log('beforeAll');
})afterAll(() => {console.log('afterAll');
})beforeEach(() => {console.log('beforeEach');
})afterEach(() => {console.log('afterEach');
})test('', () => {console.log('test');expect('apple').toBe('apple');
})/*** 打印顺序为:* 1、beforeAll* 2、beforeEach* 3、test* 4、afterEach* 5、afterAll*/
可以使用 describe 关键字对 test 进行分组。有以下两条规则:
1、上面四个钩子可以放在 describe 内,放在 describe 内部的钩子仅对当前分组生效。
2、当有多个 describe 时,会先执行所有的 describe,再执行所有的 test。
举个例子:
beforeAll(() => {console.log('outer-beforeAll');
})afterAll(() => {console.log('outer-afterAll');
})beforeEach(() => {console.log('outer-beforeEach');
})afterEach(() => {console.log('outer-afterEach');
})describe('group 1', () => {beforeEach(() => {console.log('inner-group-1-beforeEach');})afterEach(() => {console.log('inner-group-1-afterEach');})console.log('inner-group-1');test('', () => {console.log('inner-group-1-test');expect('apple').toBe('apple');})
})describe('group 2', () => {console.log('inner-group-2');test('', () => {console.log('inner-group-2-test');expect('banana').toBe('banana');})
})/*** 打印顺序为:* 1、inner-group-1* 2、inner-group-2* 3、outer-beforeAll* 4、outer-beforeEach* 5、inner-group-1-beforeEach* 6、inner-group-1-test* 7、inner-group-1-afterEach* 8、outer-afterEach* 9、outer-beforeEach* 10、inner-group-2-test* 11、outer-afterEach* 12、outer-afterAll*/