我的代碼如下所示的任何提示。我的問題是圍繞這個方法編寫一個單元測試用例。我正在用摩卡和sin for一起用來存根。我寫單元測試是
單元測試
it("Should return an error if there is an error in retrieving the user details from the db",function(done)
{
request={
body:{
email:'[email protected]'
}
};
var expectedMessageFromCrypto = '12121212121';
var cryptoStub = sinon.stub(crypto, "randomBytes",function(err,callback){
callback(null,expectedMessageFromCrypto);
});
user.resetPassword(request,response,next);
cryptoStub.restore();
done();
});
});
的resetPassword模塊
methods.exports.resetPassword = function (req, res, next) {
var token = null;
async.waterfall([
function (done) {
crypto.randomBytes(16, function (err, buf) {
if(err){
return res.status(400);
}
else{
token = buf.toString('hex');
}
done(err, token);
});
},
function (token, done) {
var user = getUserInformation(req.body.email);
sendEmail(user, done);
}
], function (err) {
if (err) {
logger.error('error in sending confirmation mail');
return next(err);
}
res.status(200).send('success');
});
};
嗨,我不太瞭解這個問題。你是否試圖測試第二個瀑布方法而不管第一個瀑布方法?你能改變方法嗎?還是它給了? –
嗨,在第一個功能我能夠得到一些價值的令牌。我需要將此令牌傳遞給第二個函數。我無法更改該方法,因爲它是現有方法 –
我面臨的問題是控件轉到異步瀑布中的第一個函數,但調用完成後(err,token)被調用,控件不會進入第二個函數(令牌,完成) –