Javascript 如何监视异步函数并断言它会引发sinon的错误?
我正在尝试使用Mocha和ts节点为我的项目用TypeScript编写单元测试。 当我使用sinon对异步函数进行监视时,我无法通过测试。 下面是我的代码Javascript 如何监视异步函数并断言它会引发sinon的错误?,javascript,typescript,async-await,mocha.js,sinon,Javascript,Typescript,Async Await,Mocha.js,Sinon,我正在尝试使用Mocha和ts节点为我的项目用TypeScript编写单元测试。 当我使用sinon对异步函数进行监视时,我无法通过测试。 下面是我的代码 class MyClass { async businessFunction(param): Promise<void> { if (!param) //Validate the input throw new Error("input must be valid");
class MyClass {
async businessFunction(param): Promise<void> {
if (!param) //Validate the input
throw new Error("input must be valid");
// Then do my business
}
}
有没有人有处理这件事的经验?
有人建议我用捕捉到的错误进行检查,但这似乎很复杂,而且检查代码会被不必要地重复。您的函数是一个
异步
函数
forasync
函数声明它们将返回:
一个承诺
,它将使用异步函数返回的值进行解析,或者使用异步函数内引发的未捕获异常进行拒绝
换句话说,您的函数不会抛出错误,它返回一个
承诺
,该承诺将随错误一起拒绝
由于您使用的是
Mocha
,因此可以使用类似于.rejected
from的内容来测试async
函数返回的承诺是否拒绝:
it("The case of invalid", async () => {
const theObject = new MyClass();
await theObject.businessFunction(undefined).should.be.rejected; // SUCCESS
await theObject.businessFunction(null).should.be.rejected; // SUCCESS
});
it("The case of invalid", async () => {
const theObject = new MyClass();
await theObject.businessFunction(undefined).should.be.rejected; // SUCCESS
await theObject.businessFunction(null).should.be.rejected; // SUCCESS
});