这有效:
const err = new exceptions.InvalidCredentialsError('');
const fn = function () { throw err; };
expect(fn).to.throw(err);
如何为异步函数编写测试?
const err = new exceptions.InvalidCredentialsError('');
const fn = async function () { throw err; };
expect(fn).to.throw(err);
上述方法无效。
答案 0 :(得分:1)
使用async
定义的函数在调用时返回Promise
。有一个名为Chai as Promised的Chai插件,您可以使用它来测试您的功能。
按照npm的承诺安装Chai:
$ npm install chai-as-promised --save-dev
将它插入柴:
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
var expect = chai.expect;
然后为您的异步函数编写测试。如果您的测试环境允许您从测试中返回Promise
(如Mocha),那么请执行以下操作:
const err = new exceptions.InvalidCredentialsError('');
const fn = async function () { throw err; };
return expect(fn()).to.be.rejectedWith(err);
如果您的测试环境不允许您返回Promise
,请执行以下操作:
const err = new exceptions.InvalidCredentialsError('');
const fn = async function () { throw err; };
expect(fn()).to.be.rejectedWith(err).notify(done); // where `done` is the callback
请注意,函数的返回值(Promise
)将传递给expect()
,而不是函数本身。