首页 > 解决方案 > 开玩笑 beforeEach/afterEach 只是这个范围内的块?

问题描述

我想做这样的事情:

beforeEach(() => {
   populateDatabase(); 
}); 

afterEach(() => {
   clearDatabase(); 
}); 


describe("Create and update user test suite", () => {
   let user; 
   it("Post a new user returns a user", async () => {
        const initUser = {/*...*/}; 
        user = await createUser(initUser); 
        //expect... 
   }); 

   it("Modify the user returns the modified user", async () => {
       user = await modifyUser({...user, ...{/*...*/}); 
       //expect...
   }); 

}); 

describe ("Create and update business test suit", () => {
   let business; 
   //it... 
}); 

也就是说,我想在描述块中保留从测试到测试的数据库状态,然后在描述块的末尾将其清除。

但是这段代码的工作方式是它会在每次测试后初始化并清除,这不是我想要的。

我可以将所有期望都放在一个测试中,但是我会失去对测试失败的确切部分的可见性。

处理这种情况的最佳方法是什么?

标签: testingjestjs

解决方案


要在完成每个描述块后重新初始化数据库,请检查beforeAllafterAll方法。

将这些方法放在describe 块中会将它们的范围限定为该特定块


推荐阅读