Это не то, как вы используете Обещания с Мокко.
Mocha поддерживает асинхронные тесты, просто возвращая обещание (без необходимости done()
) или используя функцию async
в качестве теста (которая неявно возвращает обещание), например так:
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()
в не низкоуровневом коде считается антипаттерном. См. Этот вопрос для получения более подробной информации: Что такое явное обещание построения antipattern и как его избежать?