我应该如何测试拒绝:
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;
});
应该拒绝whit错误'密码无效',但我收到错误:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure
it resolves.
答案 0 :(得分:1)
您可能会抛出错误并测试错误消息的内容。 你不必拒绝这个承诺,因为一个例外拒绝承诺而你不应该把它包装在另一个承诺中:
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');