gpt4 book ai didi

javascript - 如何将 afterEach 与 Mocha 异步单元测试一起使用?

转载 作者:行者123 更新时间:2023-11-30 20:13:35 24 4
gpt4 key购买 nike

在下面的代码中,afterEach() 被调用 before 测试中的 promises 已经解决并且 done() 被调用。我希望它在使用 done() 完成测试后运行。正确的做法是什么?

describe ("Some test", ()=>{
afterEach(()=>{
console.log("Done")
})

it("Does something", done=>{
new Promise (resolve=>{
let result = doSomething();
assert.isOK(result);
done();
})
})
})

最佳答案

这不是您在 Mocha 中使用 Promises 的方式。

Mocha 仅通过返回 Promise(不需要 done())或使用 async 函数作为测试(隐式返回 Promise)来支持异步测试), 像这样:

describe ("Some test", ()=>{
afterEach(()=>{
console.log("Done")
})

it("Does something", async () => {
const result = await someAsyncFunction();
assert.isOK(result);
// no need to return from this one, async functions always return a Promise.
})
})

describe ("Some test", ()=>{
afterEach(()=>{
console.log("Done")
})

it("Does something", done=>{
// note the return
return new Promise (resolve=>{
doSomethingWithCallback(result => {
assert.isOK(result);
resolve(result);
});
})
})
})

请注意,在非低级代码中使用 new Promise() 构造函数被视为反模式。有关详细信息,请参阅此问题:What is the explicit promise construction antipattern and how do I avoid it?

关于javascript - 如何将 afterEach 与 Mocha 异步单元测试一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52152558/

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