jest 之辅助函数运用
写测试用例的时候,我们经常需要进行测试之前做一些准备工作,和在进行测试后需要进行一些整理工作。Jest提供辅助函数来处理这个问题。
一次性设置
如何要为测试设置初始化值等,且只会执行一次,可以使用 beforeAll、afterAll
let i = 0;
let j = 0;
beforeAll(() => {
++i;
console.log(`beforeAll ${i}`);
});
afterAll(() => {
j++;
console.log(`afterAll ${j}`)
})
describe('test', () => {
test('test1', () => {
console.log(`test1 ${i}`);
})
test('test2', () => {
console.log(`test2 ${j}`);
})
})
输出:
beforeAll 1
test1 1
test2 0
afterAll 1
多次测试重复设置
如果你有一些要为多次测试重复设置的工作,可以使用 beforeEach、afterEach。
let i = 0;
let j = 0;
beforeEach(() => {
++i;
console.log(`beforeEach ${i}`);
});
afterEach(() => {
j++;
console.log(`afterEach ${j}`)
})
describe('test', () => {
test('test1', () => {
console.log(`test1 ${i}`);
})
test('test2', () => {
console.log(`test2 ${j}`);
})
})
输出:
beforeEach 1
test1 1
afterEach 1
beforeEach 2
test2 1
afterEach 2
作用域
before 和 after 的块可以应用到文件中的每一个测试。此外还可以通过 describe 块来将测试中的某一块进行分组。当 before 和 after 的块在 describe 块内部的时候,则只适用于该 describe 块内的测试。
let i = 0;
let j = 0;
beforeEach(() => {
++i;
console.log(`beforeEach ${i}`);
});
afterEach(() => {
j++;
console.log(`afterEach ${j}`)
})
describe('test1', () => {
beforeEach(() => {
console.log(`beforeEach test1 inner ${i}`)
})
afterEach(() => {
console.log(`afterEach test1 inner ${i}`)
})
test('test1', () => {
console.log(`test1 ${i}`);
})
})
describe('test2', () => {
test('test2', () => {
console.log(`test2 ${j}`);
})
})
输出:
beforeEach 1
beforeEach test1 inner 1
test1 1
afterEach test1 inner 1
afterEach 1
beforeEach 2
test2 1
afterEach 2
执行顺序
let i = 0;
let j = 0;
beforeAll(() => {
console.log('1-beforeAll');
})
afterAll(() => {
console.log('1-afterAll');
})
beforeEach(() => {
++i;
console.log(`1-beforeEach ${i}次`);
});
afterEach(() => {
++j;
console.log(`1-afterEach ${j}次`);
})
describe('test1', () => {
let m = 0;
let n = 0;
beforeAll(() => {
console.log('2-beforeAll inner');
});
afterAll(() => {
console.log('2-afterAll inner');
});
beforeEach(() => {
++m;
console.log(`2-beforeEach test1 inner ${m}次`)
})
afterEach(() => {
++n;
console.log(`2-afterEach test1 inner ${n}次`)
})
test('test1', () => {
console.log(`test1 ${i}`);
})
})
describe('test2', () => {
test('test2', () => {
console.log(`test2 ${j}`);
})
})
输出
1-beforeAll
2-beforeAll inner
1-beforeEach 1次
2-beforeEach test1 innner 1次
test1 1
2-afterEach test1 innner 1次
1-afterEach 1次
2-afterAll inner
1-beforeEach 2次
test2 1
1-afterEach 2次
1-afterAll