我已经搜索了如何解决这个问题,但我测试的所有解决方案都无法解决。
我有一个返回promise的函数,我正在尝试使用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);
}
});
});
测试失败了:
错误:字符串“无效值”。被抛出,抛出一个错误:)
我测试了一些更改,例如将expect包装到函数中
expect(async()=&gt; {...})。to.throw(错误);
和其他人我发现谷歌搜索。但我不能让这个工作。
我错过了什么?
答案 0 :(得分:1)
expect().to.throw(Error)
仅适用于同步功能。如果您想要使用异步函数的类似功能,请查看chai-as-promised
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);
}
});
});