【发布时间】:2016-03-10 03:20:23
【问题描述】:
我的 node.js 服务器中有一个方法,它返回一个 Promise - 抛出一个自定义异常 (UserNotAuthenticatedError) - 我想编写一个测试来确保这个异常是必要时抛出。
方法如下:
export function changePassword(userId, oldPass, newPass) {
var query = User.findById(userId);
return query.exec()
.then(user => {
if (user.authenticate(oldPass)) {
user.password = newPass;
return user.save();
} else {
// I want to test that this Exception is thrown
throw new UserNotAuthenticatedError();
}
});
}
我已经尝试过编写测试,这就是我目前所做的:
describe('#changePassword', function() {
it('should throw a UserNotAuthenticatedError when passing wrong password', function() {
var userId = user._id;
var wrongPwd = 'wrongpassword';
var newPwd = 'new password';
// so far the following only tells me that the Promise was rejected, but
// I WANT TO TEST THAT THE REJECTION WAS DUE TO A 'UserNotAuthenticatedError'
UserService.changePassword(userId, wrongPwd, newPwd).should.be.rejected;
});
});
我已完成检查返回的承诺是否被拒绝,但我还想更具体地检查返回的承诺是否为UserNotAuthenticatedError。我怎么能这样做?
【问题讨论】:
标签: javascript node.js unit-testing jasmine promise