Mocha - 断言异步函数抛出异常
Mocha - Assert asynchronous function throws exception
我正在尝试测试 async
函数是否会抛出异常,但我一直收到此错误:
AssertionError: expected [Function] to throw an error
我正在使用 Mocha 和 Chai 的断言库。
it('Throw an error', async () => {
assert.throws(async () => {
await retrieveException();
}, Error);
const retrieveException = async () => {
// code snippit
throw new Error('This is an error');
}
}
我在检查抛出的异常、异步性质或两者时做错了什么吗?
参考资料
我看过以前的问题 here(其中一个答案通过三个不同的库 [断言和两个 BDD 方法]),但我无法解决问题。
This article 也没什么用。
也不是 Node.js 中的 documentation article。
expect().to.throw(Error)
仅适用于同步功能。如果您想要使用异步函数的类似功能,请查看 chai-as-promised
例如
import chai, { assert } from 'chai';
import chaiAsPromised from 'chai-as-promised';
chai.use(chaiAsPromised);
describe('63511399', () => {
it('Throw an error', async () => {
const retrieveException = async () => {
throw new Error('This is an error');
};
return assert.isRejected(retrieveException(), Error);
});
});
单元测试结果:
63511399
✓ Throw an error
1 passing (29ms)
在 Node JS sins v10.0.0 中有:
assert.rejects(asyncFn[, error][, message])
用于检查异步函数中的异常,
使用 Mocha 时,它看起来像这样:
it('should tests some thing..', async function () {
await assert.rejects(async () => {
throw new Error('This is an error')
}, 'Error: This is an error')
})
我正在尝试测试 async
函数是否会抛出异常,但我一直收到此错误:
AssertionError: expected [Function] to throw an error
我正在使用 Mocha 和 Chai 的断言库。
it('Throw an error', async () => {
assert.throws(async () => {
await retrieveException();
}, Error);
const retrieveException = async () => {
// code snippit
throw new Error('This is an error');
}
}
我在检查抛出的异常、异步性质或两者时做错了什么吗?
参考资料
我看过以前的问题 here(其中一个答案通过三个不同的库 [断言和两个 BDD 方法]),但我无法解决问题。
This article 也没什么用。
也不是 Node.js 中的 documentation article。
expect().to.throw(Error)
仅适用于同步功能。如果您想要使用异步函数的类似功能,请查看 chai-as-promised
例如
import chai, { assert } from 'chai';
import chaiAsPromised from 'chai-as-promised';
chai.use(chaiAsPromised);
describe('63511399', () => {
it('Throw an error', async () => {
const retrieveException = async () => {
throw new Error('This is an error');
};
return assert.isRejected(retrieveException(), Error);
});
});
单元测试结果:
63511399
✓ Throw an error
1 passing (29ms)
在 Node JS sins v10.0.0 中有:
assert.rejects(asyncFn[, error][, message])
用于检查异步函数中的异常,
使用 Mocha 时,它看起来像这样:
it('should tests some thing..', async function () {
await assert.rejects(async () => {
throw new Error('This is an error')
}, 'Error: This is an error')
})