Es6 promise 按承诺测试拒绝超时
我应该如何测试拒绝:Es6 promise 按承诺测试拒绝超时,es6-promise,chai,chai-as-promised,Es6 Promise,Chai,Chai As Promised,我应该如何测试拒绝: return new Promise(function(resolve, reject){ models.users.find({ where: { email: email } }).then(function(result){ if(!result)
return new Promise(function(resolve, reject){
models.users.find({
where: {
email: email
}
}).then(function(result){
if(!result)
throw 'Invalid password'
}).catch(function(err){
reject(err);
});
});
在我的测试中:
it('should be rejected', function(){
let data= { req: {
email: 'alvin@.oc',
}};
return User.authUser(data).should.be.rejected;
});
它应该被拒绝,错误为“无效密码”,但我得到错误:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure
it resolves.
您可以抛出错误并测试错误消息的内容。 你不必拒绝承诺,因为一个例外拒绝了承诺,你不应该将它包装在另一个承诺中:
return models.users.find({
where: {
email: email
}
}).then(function(result){
if(!result)
throw new Error('Invalid password');
});
在你的测试中:
return User.authUser(data).should.be.rejectedWith(Error).and.eventually.have.property("message").equal('Invalid password');
如果models.users.find()
已返回承诺,则不应使用newpromise
将其包装。FWIW,您的代码从不调用resolve()
。。。