我正在使用https://github.com/mhevery/jasmine-node来测试我的nodejs服务器路由 . 我的猫鼬模型具有如下工作预功能
userSchema.pre('save', function(next) {
var user = this;
if (!user.isModified('password')) return next();
bcrypt.genSalt(10, function(err, salt) {
if (err) return next(err);
logger.info('Hashing password!!!');
bcrypt.hash(user.password, salt, null, function(err, hash) {
if (err) return next(err);
user.password = hash;
next();
});
});
});
现在我需要在jasmine中编写一个测试用例,创建一个userSchema对象并将其保存到mongodb,以便在我的测试用例中进一步使用它 .
var User = require("../../../../models/User");
it("{postLogin - invalid}", function(done) {
var user = new User({email: "test@test.com", password: "a"});
user.save(function(err) {
if (err){
console.log(err);
return next(err);
}
console.log('user saved to db: ' +user.email);
request.post(invalidLoginParams, function(error, response, body) {
expect(response.statusCode).toBe(400);
done();
});
});
},15000);
我使用jasmine-node运行上面的测试用例,我得到了日志 'Hashing password!!!' ,这意味着它正在调用这个函数 . 但在此之后它永远不会回到我的测试用例 . 它应该打印日志 'user saved to db: ' 但它永远不会从.pre('save')函数返回 . 任何想法我在哪里和我缺少什么 . 在谷歌上找不到任何答案 . 希望能在这里得到它!谢谢
1 回答
请确保正确调用回拨“done()” .