beforeAll 是 Jest 中的一个函数,用于在运行测试套件中的所有测试之前执行一次。相比之下,在代码最上方写某些代码,则这些代码将在每个测试中都被执行。因此,它们的区别在于执行次数和时机。
下面是一个示例,可以更好地理解 beforeAll 和在代码顶部写有什么不同:
let count = 0;
beforeAll(() => {
// Increment count before all tests
count++;
});
test('first test', () => {
expect(count).toBe(1);
});
test('second test', () => {
expect(count).toBe(1);
});
在上述示例中,beforeAll 函数被用来在测试套件中的所有测试之前增加 count 变量的值。因为它只在测试套件执行前执行一次,所以 count 只会增加一次。因此,count 的值将在第一个测试中为 1,在第二个测试中也为 1。
相反,如果我们将相同的代码复制并放在每个测试的最前面,则 count 的增加将在每个测试中都执行,如下所示:
let count = 0;
test('first test', () => {
count++;
expect(count).toBe(1);
});
test('second test', () => {
count++;
expect(count).toBe(2);
});
在上述示例中,我们将 count 变量的增加代码复制并添加到每个测试的开始处。因此,在第一个测试中,count 递增一次,变为 1。在第二个测试中,count 再次递增,变为 2。
因此,使用 beforeAll 或在代码顶部编写代码,将取决于你希望代码在测试套件中执行多少次和何时执行。