【问题标题】:Jest beforeEach/afterEach just the blocks in this scope?开玩笑 beforeEach/afterEach 只是这个范围内的块?
【发布时间】:2019-11-08 00:30:59
【问题描述】:

我想做这样的事情:

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... 
}); 

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

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

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

最好的处理方法是什么?

【问题讨论】:

  • describe 块内使用 beforeAllafterAll

标签: testing jestjs


【解决方案1】:

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

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

【讨论】:

  • 之前不会只运行一次吗?我希望它在每个描述块之前运行
  • 是的,如果它们是在文档的顶层定义的。如果在每个 describe 块中包含 beforeAllafterAll,它将为每个块运行一次。
猜你喜欢
  • 2023-01-17
  • 2018-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-31
  • 1970-01-01
  • 2019-01-26
相关资源
最近更新 更多