gpt4 book ai didi

javascript - 测试用例失败后的 Jest 清理

转载 作者:行者123 更新时间:2023-12-03 21:20:22 24 4
gpt4 key购买 nike

测试用例失败后清理的好方法是什么?
对于很多测试用例,我首先创建了一个干净的数据库环境,需要在一个测试用例完成后进行清理。

test('some test', async () => {
const { sheetService, cleanup } = await makeUniqueTestSheetService();

// do tests with expect()

await cleanup();
});

问题是:如果 expects 之一失败, cleanup()没有被调用,因此没有清理数据库环境,开 Jest 提示 Jest did not exit one second after the test run has completed.因为连接没有关闭。

我当前的解决方法看起来像这样,但是将清理 Hook 推送到数组中感觉并不好和干净,而不是在 afterAll 中处理。事件。
const cleanUpHooks: (() => Promise<void>)[] = [];

afterAll(async () => {
await Promise.all(cleanUpHooks.map(hook => hook()));
});

test('some test', async () => {
const { sheetService, cleanup } = await makeUniqueTestSheetService();

// do tests with expect()

await cleanup();
});

最佳答案

在这种情况下使用 try/finally block 。
例如:

  it("some test case", async done => {
try {
expect(false).toEqual(true);
console.log("abc");
done();
}finally{
console.log("finally");
// cleanup code below...
}
});
上面的代码只会执行 finally block (因此“finally”会打印在控制台而不是“abc”中。
请注意,catch block 会给出超时,因此只需使用 finally .
This答案一定有用。

关于javascript - 测试用例失败后的 Jest 清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54649044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com