一、四个钩子
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
*/