【发布时间】:2015-03-01 00:47:42
【问题描述】:
我将 chai-as-promised 与 sinonjs 结合使用,但我无法弄清楚如何验证更改的密码。
我有类似下面的代码:
it('changes password if old password is valid', function(){
var u = new User({id: '1234567890', email:'user@email.com'});
var encrypted_password = bcrypt.hashSync('newtestPassword', bcrypt.genSaltSync(8), null);
sinon.stub(db, 'executeQuery', function() {
return q.fcall( function() {
return [ {u: { _data: { data: {flake_id: '1234567890', email:'user@email.com', encrypted_password: encrypted_password}}}}];
})
})
return u.ChangePassword('testPassword', 'newTestPassword').should
.eventually.be.an.instanceof(User)
.and.have.property('encrypted_password')
.that.satisfy(bcrypt.compareSync('newTestPassword', this));
});
u.ChagePassword() 返回一个承诺。
我的问题是断言的最后一行 - 我希望能够从存根数据库响应和用户 bcrypt.compareSync() 中提取加密密码以检查它是否是正确的值,但我不清楚如何从响应中引用 encrypted_password 值。
根据文档,property() 调用使该属性成为断言的主题,这就是我尝试使用this 的原因,但我最终导致 bcrypt 抛出“不正确的参数”错误,我认为这是由于this 参考。
有人对如何正确执行此操作有建议吗?
注意:我确实打算用检查查询的模拟替换存根。
【问题讨论】:
标签: javascript node.js testing sinon chai-as-promised