【发布时间】:2021-09-24 18:55:32
【问题描述】:
我正在尝试在每个测试套件之后使用 beforeAll 和 afterAll 方法来设置和拆卸数据库。然而,所有 beforeAll 函数一个接一个地运行。根据(文档)[https://jestjs.io/docs/api#beforealllfn-timeout] 的预期行为是 describe 内的 beforeAll 和 afterAll 应该只在 describe 块的开头运行。
这是我的代码示例。
test-file-1.ts
describe("POST endpoint", () => {
beforeAll(async () => {
console.log("✨ Seeding DB for createBooking tests...");
const createProperty = await prisma.property.create({});
console.log("✨ DB seeded for createBooking test!");
});
afterAll(async () => {
await clearDB();
await prisma.$disconnect();
console.log("✨ DB successfully cleared!");
});
});
test-file-2.ts
describe("PUT endpoint", () => {
beforeAll(async () => {
console.log("✨ Seeding DB for updateBooking tests...");
const createProperty = await prisma.property.create({});
console.log("✨ DB seeded for updateBooking test!");
});
afterAll(async () => {
await clearDB();
await prisma.$disconnect();
console.log("✨ DB successfully cleared!");
});
});
当我运行这些测试时,控制台会记录以下内容,这表明每个测试文件中的 beforeAll 函数正在彼此同步运行。
✨ Seeding DB for createBooking tests...
✨ Seeding DB for updateBooking tests...
✨ DB seeded for createBooking test!
✨ DB seeded for updateBooking test!
然后测试套件运行。为什么 beforeAll 和 afterAll 函数不在describe 块中的各自上下文范围内?我是不是做错了什么?
【问题讨论】:
标签: jestjs