gpt4 book ai didi

javascript - Chai:在没有传递参数时在 async/await 上抛出错误

转载 作者:行者123 更新时间:2023-11-28 20:34:42 26 4
gpt4 key购买 nike

我正在尝试测试我的代码 (Typescript),它应该在没有传递参数时抛出

getID(ID) { if(!ID){throw new Error('stop js')} ....}

it('should fail if no ID', async () => {

expect(async () => await myService.getID() ).to.throw("stop js");
})

根据文档,上面应该可以工作,但是当我运行测试时,我得到了

 1) myTest
should fail if no groupId is passed:
AssertionError: expected [Function] to throw an error

最佳答案

你是在 Promises 上运作; async/await 也只是 Promises 的语法糖。

当你运行这样的代码时:

it('should fail if no ID', () => { 
expect(/* not async */ myService.getID()).to.throw("stop js");
});

...对 getID 的调用将同步 抛出一个错误。但是,当您运行这样的代码时:

it('should fail if no ID', async () => { 
expect(async () => await myService.getID()).to.throw("stop js");
});

...对 async 的调用会将一个 Promise 传递给 expect,这将异步因您的错误而被拒绝。

NineBerry 在评论中提到,您可以安装和使用库 chai-as-promised对 promise 进行操作:

return expect(async () => await myService.getID()).to.eventually.throw("stop js");
// or
return expect(async () => await myService.getID()).to.eventually.be.rejectedWith("stop js");

您需要return expect 的结果,或者await;否则,您的测试将不会等待 expect 结果,然后再确定它是否成功。

关于javascript - Chai:在没有传递参数时在 async/await 上抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58959149/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com