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(s​​enha + 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 。 我没有尝试过,但看起来不错。