Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何监视异步函数并断言它会引发sinon的错误?_Javascript_Typescript_Async Await_Mocha.js_Sinon - Fatal编程技术网

Javascript 如何监视异步函数并断言它会引发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");

我正在尝试使用Mocha和ts节点为我的项目用TypeScript编写单元测试。 当我使用sinon对异步函数进行监视时,我无法通过测试。 下面是我的代码

class MyClass {
    async businessFunction(param): Promise<void> {
        if (!param)  //Validate the input
          throw new Error("input must be valid");

        // Then do my business
    }
}
有没有人有处理这件事的经验?
有人建议我用捕捉到的错误进行检查,但这似乎很复杂,而且检查代码会被不必要地重复。

您的函数是一个
异步
函数

for
async
函数声明它们将返回:

一个
承诺
,它将使用异步函数返回的值进行解析,或者使用异步函数内引发的未捕获异常进行拒绝


换句话说,您的函数不会抛出错误,它返回一个
承诺
,该承诺将随错误一起拒绝


由于您使用的是
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
});