gpt4 book ai didi

javascript - Jasmine:返回 promise 的测试是一个具体的异常

转载 作者:搜寻专家 更新时间:2023-10-31 23:08:23 24 4
gpt4 key购买 nike

我的 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;
});
});

我已经完成检查返回的 promise 是否被拒绝,但我还想更具体地检查返回的 promise 是否为 UserNotAuthenticatedError。我怎么能那样做?

最佳答案

我终于找到了一个更好的方法来解决它:

it('should throw a UserNotAuthenticatedError when passing wrong password', function() {
var userId = user._id;
var wrongPwd = 'wrongpassword';
var newPwd = 'new password';

var promise = UserService.changePassword(userId, wrongPwd, newPwd);
return promise.should.be.rejectedWith(UserNotAuthenticatedError);
});

关于javascript - Jasmine:返回 promise 的测试是一个具体的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35893695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com