NodeJs,摩卡和mongoose
我有以下结构:
|服务器 |分贝 | mongooseTest.js |testing | userModel.test.js |用户 | userModel.js
用他们的代码:
mongooseTest.js
var mongoose = require('mongoose'); module.exports = function(){ var db = mongoose.createConnection('localhost','dbUnitTest'); db.on('connected',function(){ console.log('DB:'+ db.name +'local:'+ db.host +':'+ db.port); }); db.on('error',function(err){ 的console.log(ERR); }); 返回数据库; };
userModel.test.js
var assert = require('assert'), 应该=要求('应该'), conn = require('../ db / mongooseTest'), UserModel = require('../ user / userModel'); describe('User Model',function(){ describe('Save',function(){ 它('保存...',function(){ var db = conn(); var Model = db.model('User'); var userModel = new Model({ 名字:'我的名字', 电子邮件:'contact@com.br', 通过:“anything123” }); userModel.on('save',function(user){ console.log('通过保存来自用户的事件句柄'); }); userModel.save(function(err,user){ console.log('通过保存从用户'); 如果(err)console.log(err); 的console.log(用户); }); }); }) })
userModel.js
var mongoose = require('mongoose'), crypto = require('crypto'), Schema = mongoose.Schema; var setPass = function(value){ var salt ='anyRandomSaltValue'; this.set('salt',salt); var pass = hashPass(value + salt); 回传 } var hashPass = function(value){ 返回crypto.createHash('sha1')。update(value).digest('HEX'); } var userSchema = new Schema({ 名称: { 键入:String, required:true }, 电子邮件:{ 键入:String, 要求:真, 独特:真实 }, 通过:{ 键入:String, 要求:真, set:setPass }, 盐: { 键入:String, required:true } }); userSchema.method({ validatePass:function(senha){ var salt = this.get('salt'); var passSha = hashPass(senha + salt); 返回passSha === this.get('senha'); }, }); userSchema.static({ findByEmail:函数(电子邮件,成功,错误){ this.findOne({ 电邮:电邮 },函数(e,o){ 如果(e){ (错误)错误(e); } else { (成功)成功(o); } }); }, }); module.exports = mongoose.model(“User”,userSchema);
问题是…当我运行“摩卡”执行我的unit testing,保存function的callback不执行。
感谢所有!
通过以下方法解决问题 – https://github.com/joshmosh/node-mongoose-mocha-demo
我也发现这个解决scheme – https://github.com/elliotf/mocha-mongoose 。 我没有尝试过,但看起来不错。