摩卡测试通过,即使我抛出错误

mocha test passes even though I throw error

it.only('test', async() => {
    const lol = pdfjs.getDocument({data: data, password: "123"})
    lol.promise.then((ex) => { return ex }).catch((err) => {
        console.log(err)
        throw err;
    });
});

正在打印此代码块中的“err”,测试通过。 也尝试过 -

assert.fail('expected', 'actual', err);

done().

没有任何效果,每次测试仍然通过。

为什么会这样?

选项 1:等待承诺

只需在 promise 表达式前添加 await。你甚至不需要那些 thencatch.

it.only('test', async () => {
    const lol = pdfjs.getDocument({data: data, password: "123"});
    await lol.promise;
});

选项 2:return 承诺

如果只是 return promise,则不需要将测试函数声明为 async

it.only('test', () => {
    const lol = pdfjs.getDocument({data: data, password: "123"})
    return lol.promise;
});

选项 3:使用回调

回调被声明为测试函数的参数,并在测试完成时调用,将错误作为参数(如果有)。

it.only('test', done => {
    const lol = pdfjs.getDocument({data: data, password: "123"})
    lol.promise.then(() => done()).catch((err) => done(err));
});