摩卡测试通过,即使我抛出错误
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
。你甚至不需要那些 then
和 catch
.
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));
});
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
。你甚至不需要那些 then
和 catch
.
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));
});