Node.js 使用Chai expect-throw不捕获承诺拒绝

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 () => {

我到处寻找如何解决这个问题,但我测试的所有解决方案在我的案例中都不起作用

我有一个函数,它返回一个承诺,我正试图用Mocha和Chai测试它

我正在模糊化参数,以便函数始终返回:

拒绝(“拒绝原因”)

以下是我尝试运行的测试:

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);
    }
  });
});