清除数据库时,Jest 中的 beforeEach 超时

beforeEach in Jest timing out when clearing db

我试图在每次测试之间用 typeorm 清除我的数据库中的动态表,所以我有这个清晰的功能:

const database  = {

  async create() {
    await createConnection();
  },

async clear() {

    return new Promise(async (resolve, reject) => {
      console.log("Clear database...");
      const dynamicEntities = [
          EntityOne,
          EntityTwo,
          EntityThree
      ];

      try{// iterate over dynamic entities and clean all their tables
        
        for (let entity of dynamicEntities) {
          // get entity repository
          const repository = getRepository(entity);
          // delete all rows
          await repository.delete({});
        }
        resolve("Successfully clear database!!!");
      }catch(err){
        reject(err);
      }
    })
},
};

当我将它与 beforeAll 或 afterAll 一起使用时它工作正常,但是当有多个 describe() 时它会超时,我需要一些描述来进行测试。

我需要完成这项工作:

describe("testing jest", () => {

beforeAll(async () => {
  await database.create();
});

  afterEach(async() => {
    await database.clear();
});

  describe("test 1", () => {
    it("should return 200", () => {
        expect(100+100).toBe(200)
    });
  });

  describe("test 2", () => {
    it("should return 100", () => {
      expect(50+50).toBe(100)
    });
  });
});

谢谢!

找到了,我还在我的 clear() func for 循环中禁用了 fk 检查并稍后重新启用它,但是当我将它移出循环时它起作用了并且beforeEach 不再超时

try{// iterate over dynamic entities and clean all their tables
        await getConnection().createQueryRunner().query(`SET FOREIGN_KEY_CHECKS=0;`);
        for (let entity of dynamicEntities) {

            // get entity repository
            const repository = getRepository(entity);
            // delete all rows
            await repository.delete({});
        }
        await getConnection().createQueryRunner().query(`SET FOREIGN_KEY_CHECKS=1;`);
        resolve("Successfully clear database!!!");
      }catch(err){
        await getConnection().createQueryRunner().query(`SET FOREIGN_KEY_CHECKS=1;`);
        reject(err);
      }