Node.js 使用Chai expect-throw不捕获承诺拒绝
我到处寻找如何解决这个问题,但我测试的所有解决方案在我的案例中都不起作用 我有一个函数,它返回一个承诺,我正试图用Mocha和Chai测试它 我正在模糊化参数,以便函数始终返回: 拒绝(“拒绝原因”) 以下是我尝试运行的测试:Node.js 使用Chai expect-throw不捕获承诺拒绝,node.js,mocha.js,chai,Node.js,Mocha.js,Chai,我到处寻找如何解决这个问题,但我测试的所有解决方案在我的案例中都不起作用 我有一个函数,它返回一个承诺,我正试图用Mocha和Chai测试它 我正在模糊化参数,以便函数始终返回: 拒绝(“拒绝原因”) 以下是我尝试运行的测试: describe('fuzzing tokenization with 1000 invalid values', () => { it('should throw an error - invalid value', async () => {
describe('fuzzing tokenization with 1000 invalid values', () => {
it('should throw an error - invalid value', async () => {
for(var i=0; i <= 1000; i++){
var req = {
body: {
value: fuzzer.mutate.string('1000000000000000')
},
user: {
displayName: user
}
};
expect(await tokenizer.tokenize(req)).to.throw(Error);
}
});
});
descripe('fuzzing tokenization with 1000个无效值',()=>{
它('应该抛出一个错误-无效值',异步()=>{
for(var i=0;i{…}).to.throw(Error)
还有一些我在谷歌上找到的。但是我不能让它工作
我缺少什么?expect().to.throw(Error)
仅适用于同步函数。如果您想要使用异步函数的类似功能,请查看
从“承诺的柴”进口承诺的柴;
从‘柴’进口柴;
柴。使用(柴)
var expect=chai.expect;
description('fuzzing tokenization with 1000个无效值',()=>{
它('应该抛出一个错误-无效值',异步()=>{
for(var i=0;i啊!当我得到你的答案时,我正在看这个lib。值得一提的是,在我的例子中,inside rejectedWith(),它应该有拒绝的原因。谢谢!@artze谢谢你的输入,但我发布的代码运行良好。如果它不适合你,可能是因为你的babel配置或你正在使用的节点版本。问题的作者使用async/Wait,所以我在我的answer@lleon可能还有其他因素导致我的代码可能会失败,所以你可能是对的。我将删除上面的注释
import chaiAsPromised from 'chai-as-promised';
import chai from 'chai';
chai.use(chaiAsPromised)
var expect = chai.expect;
describe('fuzzing tokenization with 1000 invalid values', () => {
it('should throw an error - invalid value', async () => {
for (var i = 0; i <= 1000; i++) {
var req = {
body: {
value: fuzzer.mutate.string('1000000000000000')
},
user: {
displayName: user
}
};
await expect(tokenizer.tokenize(req)).to.eventually.be.rejectedWith(Error);
}
});
});